15. maj 2007 - 21:06Der 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 :-)
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!
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
@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 :-)
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.