Home > OS >  Count boolean in mysql
Count boolean in mysql

Time:09-14

My database has a layout like this:

StudentID ActivityNumber Payed
1 1 1
2 1 0
3 1 1
4 2 0

The Payed column is a boolean to look if a perseon has payed yes or no and not to look how much he/she payed now as you see nobody payed for activity 2 but if i use this command

SELECT ActivityNumber, COUNT(*) as TimesPayed
FROM Registration
WHERE Payed = 1
GROUP BY ActivityNumber

MySQL doesn't show ActivityNumber 2 in the results because the count is 0 but I want to show that the count is 0 and I don't know how because if i delete the WHERE clause it will count it as 1 and not 0

The result i expect is this:

ActivityNumber TimesPayed
1 2
2 0

CodePudding user response:

Use conditional SUM.

Query -

SELECT ActivityNumber, sum( case when payed = 1 then 1 else 0 end ) as TimesPayed
FROM Registration
group by ActivityNumber

Fiddle

  • Related