Új hozzászólás Aktív témák
-
Apollo17hu
őstag
válasz
mr.nagy
#3698
üzenetére
Szia!
Írtam a példádhoz egy favágó kódot. Legalábbis ha sql-ben kellene megoldani, akkor én úgy állnék neki, hogy meghatároznám a total igényt, az igénylők darabszámát, és ebből számolnék tovább.
Akkor nincs gond, ha az igény többszöröse a kiosztható értéknek, mert akkor egyszerűen a kiosztható értéket az igénylők számával kell leosztani, és minden igénylő ennyit fog kapni. (Ezt már nem kódoltam bele, de értelemszerűen 20 db CASE WHEN-ről lesz szó...)
Eddig írtam meg a kódot. Még megképeztem egy olyan mezőt, ami azt tartalmazza, hogy mennyi olyan kiosztható érték marad, amiből már csak 1-1 darabot lehet véletlenszerűen (vagy extra logikával?) odaadni az igénylőknek.
select case when alap.kioszthato >= alap.total then 'N' else 'I' end hiany_fl
,case when alap.kioszthato >= alap.total then null
when isnull(alap.darab, 0) = 0 then null
else floor(alap.kioszthato / alap.darab) end ennyire_kell_csokkenteni
,case when alap.kioszthato >= alap.total then 0
when isnull(alap.darab, 0) = 0 then null
else alap.kioszthato - floor(alap.kioszthato / alap.darab) * alap.darab end ennyi_szetosztando_marad
,alap.*
from
(SELECT P1+P2+P3+P4+P5+P6+P7+P8+P9+P10+P11+P12+P13+P14+P15+P16+P17+P18+P19+P20 as total
,case when P1= 0 then 0 else 1 end + case when P2= 0 then 0 else 1 end + case when P3= 0 then 0 else 1 end + case when P4= 0 then 0 else 1 end + case when P5= 0 then 0 else 1 end + case when P6= 0 then 0 else 1 end + case when P7= 0 then 0 else 1 end + case when P8= 0 then 0 else 1 end + case when P9= 0 then 0 else 1 end + case when P10= 0 then 0 else 1 end + case when P11= 0 then 0 else 1 end + case when P12= 0 then 0 else 1 end + case when P13= 0 then 0 else 1 end + case when P14= 0 then 0 else 1 end + case when P15= 0 then 0 else 1 end + case when P16= 0 then 0 else 1 end + case when P17= 0 then 0 else 1 end + case when P18= 0 then 0 else 1 end + case when P19= 0 then 0 else 1 end + case when P20= 0 then 0 else 1 end as darab
,t.*
FROM Teszts t) alap
Új hozzászólás Aktív témák
- Vezetékes FEJhallgatók
- iPhone topik
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- exHWSW - Értünk mindenhez IS
- BestBuy ruhás topik
- Google: minden androidos telefonra jön az AirDrop-kompatibilis Quick Share
- Milyen házat vegyek?
- Milyen autót vegyek?
- TCL LCD és LED TV-k
- Milyen monitort vegyek?
- További aktív témák...
- ZBook Fury 15 G7 15.6" FHD IPS i7-10850H T2000 32GB 512GB NVMe IR kam gar
- Szuper áron eladó Lenovo ThinkPad T14 Gen 1 /Ryzen 7 PRO 4750U/16GB/512 SSD/FHD/IPS Érintőkijelző
- Gamer PC i7-3770 / GTX 1060 6GB / 16GB RAM / 720GB SSD + 500GB HDD
- Apple IPhone 16 Pro Max 256GB Amerikai Modell 2026.04-ig garis
- Lenovo Qualcomm Snapdragon X55 5G Modem Quectel EM05-G Fibocom L860-GL-16 Quectel EM120R-GL
- Lenovo 40AH és 40A1 dokkoló, töltő is.
- Lenovo ThinkPad X1 Extreme Gen3 i7-10750H 64GB 1000GB GTX1650-Ti 4K UHD 1 év gar
- TP Link HS100 Távolról vezérelhető Wi-Fi-s dugalj (Smart Plug)
- Dell Latitude 7410 Intel I7-10810U Refurbished - Garancia - Akció!
- BESZÁMÍTÁS! Sony PlayStation 5 825GB SSD lemezes konzol fejhallgatóval garanciával hibátlan működés
Á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

