[SQL] Onderverdelen op percentage

Pagina: 1
Acties:

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 14-11 14:17

Jaspertje

Max & Milo.. lief

Topicstarter
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:
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

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt met een case-when constructie wel wat creatiefs doen...

SQL:
1
2
3
4
5
6
7
select foo, bar, case 
        when percentagefilled between 0 and 50 then '0-50'
        when percentagefilled between 50 and 75 then '50-75'
        when percentagefilled between 75 and 100 then '75-100'
        else '100'
    end as precentage
From...

of een UDF gebruiken die iets soortgelijks doet...

[ Voor 9% gewijzigd door RobIII op 24-06-2008 09:28 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij