Ú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
- MSI GeForce RTX 4080 SUPER GAMING X SLIM 16G - Alza garancia 2027.01.31 - BESZÁMÍTOK!
- Prémium Tápegységek Yó árasítva Ingyen Fox-al érdekelnek?
- Szép Lenovo ThinkPad P15 G2 Tervező Vágó Laptop -75% 15,6" i9-11950H 64/2TB RTX A4000 8GB 4K OLED
- Sennheiser HD560S
- Iphone 15 Pro MAX 256GB, fehér titán, 85% akksi, TÖKÉLETES ÁLLAPOT
- Szép állapotban Lenovo ThinkPad T14s Gen 4 i5-1335u/16 GB/256 SSD/FHD+/IPS/Garancia 2027
- LÉZEREZÉS! külföldi billentyűzet magyarra kb. 20-30p alatt!
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Hp, Dell gyári 65W USB-C Type-C töltők, tápegységek
- Endgame Gear & Xtrfy gamer egerek /MZ1/OP1 8K/XM2we/XM1R/XM1 RGB (fehér/fekete/lila)/
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

