Ú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
- Apple MacBook
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- BestBuy topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Kertészet, mezőgazdaság topik
- iPhone topik
- Milyen légkondit a lakásba?
- Google Pixel 10a – évismétlés
- VR topik
- Házimozi belépő szinten
- További aktív témák...
- ÚJ, KOMPAKT GAMER PC - RYZEN 5 5600, RX 9060 XT 16GB, 32GB RAM, 1TB NVME SSD
- Apple iPhone 14 Pro Max 256GB,Újszerű,Dobozaval,12 hónap garanciával
- Apple MacBook Air M3 15 256GB,Újszerű,Dobozaval,24 hónap garanciával
- SAPPHIRE RX 6950 XT 16GB GDDR6 NITRO+ GAMING OC - Gari 2026.05.02. -ig - Eladó!
- Magyar Core I9 Dell Precision 7560 (Core I9 11950h 32Gb 512Gb 4Gb Nvidia) laptopom eladó!
- Honor laptop i5-12500H / RTX 2050 / 16GB RAM / 512GB SSD / 2K kijelző Erős, prémium gép!
- Eredeti Lenovo 300W töltők - ADL300SDC3A
- HIBÁTLAN iPhone 13 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS4638
- MikroTik CCR2004-16G-2S+
- HIBÁTLAN iPhone 12 Pro 128GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS4493
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

