Hirdeté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
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Autós topik
- Gitáros topic
- Milyen program, ami...?
- Kormányok / autós szimulátorok topikja
- Dacia topic
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- GoodSpeed: Daikin FTXF35E / RXF35F Sensira 3,3 kW Inverteres klíma - a Sztori
- Honor Magic6 Pro - kör közepén számok
- Samsung kuponkunyeráló
- További aktív témák...
- Dell Latitude 7280,12.5",FHD,i7-6600U,8GB DDR4, 256GB SSD,WIN11, 2 KAMERA
- GARANCIÁLIS, ÚJ ÁLLAPOT MacBook Air 15 M3 16GB 256GB SSD midnight (éjfekete )
- ASUS GeForce RTX 4080 16GB GDDR6X Noctua OC Edition
- Dell Latitude 7280,12.5",FHD,i7-6600U,8GB DDR4, 128GB SSD,WIN11, 2 KAMERA
- HP ProLiant DL360e G8 8xSFF 1U 2xE5-2450L (16 mag/32 szál), 144GB DDR3, iLO4, B120i, P410 1GB BBU
- G.Skill Aegis 16GB DDR4 3200MHz VADIÚJ, GARANCIÁS!
- Apple iPhone 12 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Honor X8a / 4/128GB / Kártyafüggetlen / 12HÓ Garancia
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- iPhone SE 2020 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS4594
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


