I don’t quite know how I should describe the problem for title, but here’s my question.
I have a table named hello with two columns named time and state.
Time | State
Here’s an example of the data I have
1 DC
1 VA
1 VA
2 DC
2 MD
3 MD
3 MD
3 VA
3 DC
I would like to get all the possible time and the count of “VA” (0 if “VA” doesn’t appear at the time)
The output would look like this
Time Number
1 2
2 0
3 1
I tried to do
SELECT DISTINCT time,
COUNT(state) as Number
FROM hello
WHERE state = 'VA'
GROUP BY time
but it doesn’t seem to work.
This is a conditional aggregation:
I want to add that you should never use
distinctwhen you have agroup by. The two are redundant.Distinctas a keyword is not even needed in the SQL language; semantically, it is just shorthand for grouping by all the columns.