Reputation: 610
I am not very expert with SQLite, I searched but nothing came to help me. The query is wrong, but the logic is what I would need:
SELECT COUNT(*),
LEFT JOIN (SELECT COUNT(*) FROM tb_journal WHERE range_1 < 36 AND range_2 < 18 ),
LEFT JOIN (SELECT COUNT(*) FROM tb_journal WHERE range_1 > 36 AND range_1 < 100 AND range_2 > 18 AND range_2 < 100 ),
LEFT JOIN (SELECT COUNT(*) FROM tb_journal WHERE range_1 > 100 AND range_2 > 100 )
GROUP BY periodOfDay
I have the following table:
id, range_1, range_2, periodOfDay
periodOfDay is 0, 1, 2
My aim is to get an array with just one query with
Is there a way to realize such a thing with just one query without implementing it via code?
Thank you very much.
Upvotes: 0
Views: 162
Reputation: 1269873
Use conditional aggregation -- that is, use CASE
as an argument to the SUM()
:
SELECT periodOfDay, COUNT(*),
SUM(CASE WHEN range_1 < 36 AND range_2 < 18 THEN 1 ELSE 0 END),
SUM(CASE WHEN range_1 > 36 AND range_1 < 100 AND range_2 > 18 AND range_2 < 100 THEN 1 ELSE 0 END),
SUM(CASE WHEN range_1 > 100 AND range_2 > 100 THEN 1 ELSE 0 END)
FROM tb_journal
GROUP BY periodOfDay;
Upvotes: 2