Hirdetés
- Magga: PLEX: multimédia az egész lakásban
- Real Racing 3 - Freemium csoda
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: MárkaLánc
- sziku69: Szólánc.
- bobalazs: i5 4690 + RX 460 HTPC
Ú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
- Gitáros topic
- OLED monitor topic
- BestBuy topik
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- GL.iNet Flint 2 (GL-MT6000) router
- Gyúrósok ide!
- Autós topik
- Honor Magic6 Pro - kör közepén számok
- Mindenki mosolyog a OnePlus 15T tesztfotóin
- Jolla és SailfishOS tapasztalatcsere
- További aktív témák...
- iPad 10 Eladó Újszerű GARIS!! INGYEN CSOMAGKÜLDÉS!!
- ASUS TUF A15 - 15.6"FHD 144Hz - Ryzen 7 7445HS - 16GB - 512GB - Win11 - RTX 3050 - Garancia
- Innosick, Samsung Laptop memória DDR5 5600Mhz // ÚJ // Számla // Garancia //
- Új Gamer PC - Ryzen 7 5700X / RX 9060 XT 16GB / B550M WIFI / 32GB RAM 3600MHz / 1TB NVMe SSD
- Panasonic ToughBook FZ-55-2 11.gen. I5 laptop (Intel I5-1145G7 8X4400 Mhz, 16GB DDR4, 512GB NVME)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 11 64GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS4494, 100% Akkumulátor
- Apple iPhone 14 Pro Max 128GB Space Black használt, szép állapot 100% akku 6 hónap garancia
- Samsung Galaxy S23 FE 128GB,Újszerű,Dobozaval,12 hónap garanciával
- AKCIÓ! BESZÁMÍTÁS! Részletfizetés 0% THM ÚJ RTX 5090 több típusban 3 év garanciával 27% áfával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

