Avatar billede the_ghost Nybegynder
15. maj 2007 - 21:06 Der er 6 kommentarer og
1 løsning

COUNT baseret på indhold

Mit problem er lidt tricky at forklare, så jeg hopper direkte ud i et eksempel:

Jeg har denne tabel:
customer = {customerid, categoryid, type, account, companyid }

Jeg vil gerne have noget statistik ud. Det skal være:
- Antal brugere i en virksomhed
- Antal kategorier i en virksomhed
- Samlet saldo på konto
- Antal brugere af hver type (her ligger mit problem).

Pt. har jeg følgende SQL:
SELECT companyid, COUNT(customerid), COUNT(categoryid), SUM(account) FROM customer WHERE (companyid = 245) GROUP BY companyid

Hvordan kan jeg få antallet af brugere af hver type, når jeg bl.a. bruger ovenstående SQL sætning.
Jeg havde først tænkt på noget ala COUNT(type = 1), COUNT(type = 2) men det giver samme resultat som COUNT(type).

Jeg håber I kan hjælpe mig med mit problem. På forhånd tak :-)
Avatar billede erikjacobsen Ekspert
15. maj 2007 - 21:11 #1
Det ku' være du sku' mere end een sql-sætning.
Avatar billede the_ghost Nybegynder
15. maj 2007 - 21:14 #2
Jep, det bliver også løsningen, hvis ikke jeg kan få dette til at fungerer.
Men mit spørgsmål gik nu mere på om man kunne løse mit problem, med en enkelt sql sætning!
Avatar billede kjulius Novice
15. maj 2007 - 21:29 #3
Du kunne f.eks. i stedet for en COUNT funktion bruge en SUM/CASE kombination:

SELECT companyid, COUNT(DISTINCT customerid) AS NoOfCustomers, COUNT(DISTINCT categoryid) AS NoOfCategories, SUM(account) AS Amount, SUM(CASE WHEN type = 1 THEN 1 ELSE 0 END) AS NoOfTypeOnes, SUM(CASE WHEN type = 2 THEN 1 ELSE 0 END) AS NoOfTypeTwos, SUM(CASE WHEN type = 3 THEN 1 ELSE 0 END) AS NoOfTypeThrees
FROM customer
WHERE companyid=245
GROUP BY companyid
Avatar billede the_ghost Nybegynder
15. maj 2007 - 21:42 #4
@kjulius
Lækkert - Jeg kunne vel ikke få dig til at ligge et svar?
Avatar billede erikjacobsen Ekspert
15. maj 2007 - 21:49 #5
Det er ikke videre hensigtsmæssigt at have en sql-sætning man skal rette i, bare fordi der kommer en ny type. Syn's jeg ;)
Avatar billede the_ghost Nybegynder
15. maj 2007 - 21:53 #6
@erikjacobsen
Det kan det være noget om. Men man kan jo altid lave en løkke der laver sql sætningen for sig :-)

Nu er mine typer også forholdsvis faste, men kunne egentligt have valgt 3 boolske felter istedet, om det var et godt eller dårligt designvalg kan man jo altid diskutere :-)
Avatar billede kjulius Novice
15. maj 2007 - 22:43 #7
Her kommer et svar... :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester