Hirdetés
- juhi11: Karácsony esély, hogy észrevegyük: mások is valakik - még Isten is
- Mr Dini: Mindent a StreamSharkról!
- hege8888: Retro Kocka Kuckó harmadjára Hódmezővásárhelyen
- GoodSpeed: Munkaügyi helyzet Hajdú-Biharban: észak és dél
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Torda: Így lehet fillérekből prémium okosotthon rendszert építeni 2025-ben
- Toomy: FOXPOST: régen jó volt, de már jobban jársz, ha elfelejted
- sziku69: Fűzzük össze a szavakat :)
Ú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
- Amlogic S905, S912 processzoros készülékek
- PROHARDVER! feedback: bugok, problémák, ötletek
- Bestbuy játékok
- juhi11: Karácsony esély, hogy észrevegyük: mások is valakik - még Isten is
- Google Chromecast topic
- Házimozi belépő szinten
- Windows 11
- Battlefield 6
- Ventilátorok - Ház, CPU (borda, radiátor), VGA
- Kormányok / autós szimulátorok topikja
- További aktív témák...
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! Lenovo ThinkPad L13 G3 - i5-1245U I 16GB I 256SSD I 13,3" FHD Touch I NBD Gari!
- Akciós kisWorkstation! Dell Precision 3560 i7-1165G7 4.7GHz / 16GB / 512GB / Quadro T500 2GB FHD 15"
- GYÖNYÖRŰ iPhone 13 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3576
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


