Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Hieronymus: Hogyan parkolj hátramenetben profi módon
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- Luck Dragon: MárkaLánc
- NvidiaRTX: Xiaomi Electric Scooter 6 Max: Az első rollerem
- Brogyi: CTEK akkumulátor töltő és másolatai
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Luck Dragon: Óraátállítás
Ú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
- Lenovo IdeaPad Slim 3 // AMD Ryzen 3 7320U // 8GB RAM // 240GB SSD // magyar billentyűzet //
- GAMER PC // AMD Ryzen 5 3600 // 16GB RAM // 512GB SSD // RX 6700 XT
- ASUS RT-AX92U AX6100 Tri-band WiFi6 gigabit AiMesh (2-Pack) Wi-Fi router
- Technics SA AX530
- FRISS ÚJ INTEL CORE Processzorok - Core I3 / 5 / 7 / 9 - Számla & Garancia
- Apple iPhone 13 128 GB Midnight 100% Akkumulátor 1 év Garancia Beszámítás Házhozszállítás
- BESZÁMÍTÁS! Gigabyte B760 i5 12600KF 16GB DDR4 512GB SSD RTX 3080 10GB Asus A31 PLUS TG ARGB 750W
- Steelseries Arctis Nova 1 gamer fejhallgató
- Gamer PC-Számítógép! Csere-Beszámítás! I5 9600KF / RTX 3060Ti / 16GB DDR4 / 256SSD + 2TB HDD
- LG 55C5 - 55" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen8 CPU
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

