- Milyen okostelefont vegyek?
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Google Pixel topik
- Yettel topik
- Samsung Galaxy A54 - türelemjáték
- Xiaomi 15 - kicsi telefon nagy energiával
- Nothing Phone 2a - semmi nem drága
- Samsung Galaxy A56 - megbízható középszerűség
- Samsung Galaxy S23 Ultra - non plus ultra
- Luck Dragon: Asszociációs játék. :)
- MasterDeeJay: RAM gondolatok: Mennyi a minimum? DDR3 is jó?
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- lkristóf: Prohardver fórum userscript – hogy lásd, mikor neked válaszoltak
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Új hozzászólás Aktív témák
-
válasz
mr.nagy
#3702
üzenetére
A megoldás.
- ki kell pattintani az adatok egy kulturáltabb formába
- meghatározni, hogy az igény kevesebb vagy több, mint a rendelkezésre álló mennyiség
- amennyiben kevesebb a rendelkezésre álló mennyiség, akkor arányosan mindenki kevesebbet kap (csak egész értéket)
- a maradékokat szétosztjuk úgy, hogy a legkisebb igénytől a legnagyobbig emelkedő sorrendben kapnak kompenzációtNézd el nekem, hogy a kiosztandó mennyiséget ennyi_van néven konstansként tettem bele, de kicsit már késő van

create table NormalTeszt
(
igeny_id integer,
igeny_elem char(3),
mennyiseg integer
);INSERT INTO NormalTeszt
([igeny_id], [igeny_elem], [mennyiseg])
VALUES ('1', 'P01', '3'), ('1', 'P02', '5'), ('1', 'P03', '7'), ('1', 'P04', '6'), ('1', 'P05', '8'), ('1', 'P06', '9'),
('1', 'P07', '4'), ('1', 'P08', '5'), ('1', 'P09', '3'), ('1', 'P10', '4')
;select
igeny_id,
ennyi_van,
igeny,
igeny_elem,
sorszam,
mennyiseg,
case when
ennyi_van - igeny < 0
and ennyi_van - uj_total > 0
and sorszam <= (ennyi_van - uj_total) then uj_mennyiseg + 1
else uj_mennyiseg
end as kiosztott
from (
select
igeny_id,
ennyi_van,
igeny,
igeny_elem,
mennyiseg,
sorszam,
case when ennyi_van / igeny < 1
then cast(mennyiseg * (ennyi_van / igeny ) as integer)
else mennyiseg end as uj_mennyiseg,
sum(case when ennyi_van / igeny < 1
then cast(mennyiseg * (ennyi_van / igeny ) as integer)
else mennyiseg end)
over(partition by igeny_id) as uj_total
from (
SELECT
t.igeny_id,
cast(40 as decimal (5,2)) as ennyi_van,
t.igeny_elem,
t.mennyiseg,
row_number() over(partition by t.igeny_id order by mennyiseg asc) as sorszam,
cast(sum(t.mennyiseg) over(partition by t.igeny_id) as decimal(5,2)) as igeny
FROM NormalTeszt as t) as t1
) t2
order by sorszam
Új hozzászólás Aktív témák
- Autóápolás, karbantartás, fényezés
- Kínai és egyéb olcsó órák topikja
- EA Sports WRC '23
- Villanyszerelés
- Milyen okostelefont vegyek?
- Genshin Impact (PC, PS4, Android, iOS)
- Kertészet, mezőgazdaság topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy Felhasználók OFF topicja
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- További aktív témák...
- REFURBISHED és ÚJ - HP USB-C/A Universal Dock G2 (5TW13AA) (DisplayLink)
- 219 - Lenovo LOQ (15ARP9) - AMD Ryzen 7 7435HS, RTX 4070 (ELKELT)
- Gamer PC-Számítógép! Csere-Beszámítás! I3 10100F / GTX 1660Ti / 16GB DDR4 / 512 Nvme SSD
- SzoftverPremium.hu
- Apple iPhone 16 Pro Max 256GB Desert Titanium használt, megkímélt 100% akku (13 ciklus) 6 hón
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


