Hirdetés
- TCL LCD és LED TV-k
- Majdnem 5 GHz-en ketyegett egy GPU, ami új rekordnak számít
- 3D nyomtatás
- AMD GPU-k jövője - amit tudni vélünk
- Milyen belső merevlemezt vegyek?
- HiFi műszaki szemmel - sztereó hangrendszerek
- A cégvezetők látják az AI költségeit, csak azt nem hogyan lesz ebből haszon
- Kiadta majd visszavonta a legújabb GeForce drivert az NVIDIA
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- OLED monitor topic
Ú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
- Garmin topik
- TCL LCD és LED TV-k
- Majdnem 5 GHz-en ketyegett egy GPU, ami új rekordnak számít
- Hardcore café
- Kínai és egyéb olcsó órák topikja
- Assetto Corsa Rally
- 3D nyomtatás
- AMD GPU-k jövője - amit tudni vélünk
- Milyen belső merevlemezt vegyek?
- HiFi műszaki szemmel - sztereó hangrendszerek
- További aktív témák...
- HIBÁTLAN iPhone 17 Pro Max 256GB Deep Blue-1 ÉV GARANCIA - Kártyafüggetlen, 100% Akksi
- 48 " LG OLED AI B5 4K Smart TV garanciával
- MT Micron 16GB DDR5 5600 1Rx8 PC5-5600B-SA0-1110-XT laptop SODIMM RAM
- Samsung Galaxy S24 Ultra, 512gb/12gb
- HP EliteBook x360 G4 i5-8365U / 8GB RAM / 256GB SSD / Magyar billentyűzet / 12 hónap garancia
- Dell Vostro 3425 6magos Ryzen 5 5625U 8GB RAM 256GB SSD
- Eladó Samsung Galaxy A16 4/128GB fekete / kijelző alsó része hibás / 12 hó jótállás
- HP ProDesk 600 G4 i3-8100 8GB 256GB 1 év garancia
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- REFURBISHED - Lenovo ThinkPad 40AF Dock (DisplayLink)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

