Ik wil uit een sql server 2000 database per beheerder weten hoeveel consumenten de applicatie hebben ingevuld per %. Onderverdeeld in minder dan 50%, tussen de 50% en 75%, tussen de 75% en 100% en 100%. Onderstaande SQL doet dat goed, dus eigelijk is mijn probleem al opgelost
maar:
Alle waardes komen uit dezelfde tabel dus ik vroeg me af of het ook op een makkelijkere manier kon dan bovenstaande en zo ja hoe dan.
De tabelstructuur is vrij simpel (en ja er zit een 1-1 koppeling tussen consument en consument_CalculatedValues dat is een bewuste keuze.
Consument
consumentnr
beheerid
consument_CalculatedValues
consumentnr
percentagefilled
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT distinct x.beheerid, a.aantal AS kleinerdan50, b.aantal AS tussen50en75, c.aantal AS aantaltussen75and100, d.aantal AS aantal100 FROM consument X LEFT JOIN (SELECT count(x.consumentnr) as aantal, beheerid FROM consument x INNER JOIN consument_CalculatedValues xc ON x.consumentnr = xc.consumentnr WHERE x.actief = 1 and percentagefilled >= 0 AND percentagefilled < 50 GROUP BY beheerid) A on x.beheerid = a.beheerid LEFT JOIN (SELECT count(x.consumentnr) as aantal, beheerid FROM consument x INNER JOIN consument_CalculatedValues xc ON x.consumentnr = xc.consumentnr WHERE x.actief = 1 and percentagefilled >= 50 AND percentagefilled < 75 GROUP BY beheerid) B on x.beheerid = b.beheerid LEFT JOIN (SELECT count(x.consumentnr) as aantal, beheerid FROM consument x INNER JOIN consument_CalculatedValues xc ON x.consumentnr = xc.consumentnr WHERE x.actief = 1 and percentagefilled >= 75 AND percentagefilled < 100 GROUP BY beheerid) C on x.beheerid = c.beheerid LEFT JOIN (SELECT count(x.consumentnr) as aantal, beheerid FROM consument x INNER JOIN consument_CalculatedValues xc ON x.consumentnr = xc.consumentnr WHERE x.actief = 1 and percentagefilled = 100 GROUP BY beheerid) D on x.beheerid = d.beheerid |
Alle waardes komen uit dezelfde tabel dus ik vroeg me af of het ook op een makkelijkere manier kon dan bovenstaande en zo ja hoe dan.
De tabelstructuur is vrij simpel (en ja er zit een 1-1 koppeling tussen consument en consument_CalculatedValues dat is een bewuste keuze.
Consument
consumentnr
beheerid
consument_CalculatedValues
consumentnr
percentagefilled