Hirdetés
- Android alkalmazások - szoftver kibeszélő topik
- Szívós, szép és kitartó az új OnePlus óra
- Apple iPhone 16 Pro - rutinvizsga
- Android szakmai topik
- Poco F8 Ultra – forrónaci
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Bemutatkozott a Poco X7 és X7 Pro
- iPhone topik
- Telekom mobilszolgáltatások
- Google Pixel topik
Ú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
- 3D nyomtatás
- Kerékpárosok, bringások ide!
- Samsung Galaxy Felhasználók OFF topicja
- Székesfehérvár és környéke adok-veszek-beszélgetek
- Autós topik
- Motoros topic
- Ilyet se látunk minden nap, már füstölt a GeForce, de a játék még futott
- Viccrovat
- Építő/felújító topik
- Szeged és környéke adok-veszek-beszélgetek
- További aktív témák...
- billentyűzetek - kiárusítás - Logitech, Corsair, ASUS
- BESZÁMÍTÁS! ASUS H510M i5 11400F 16GB DDR4 512GB SSD RX 6500 XT 8GB Gembird Fornax 500 DeepCool 400W
- MacBook Air 13" M2 / 256GB / 8GB midnight (éjkék) / 96% akksi
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- Keresünk Galaxy S21/S21+/S21 Ultra/S21 FE
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest



