我对SQLite不是很专业,我搜索但没有任何事情来帮助我。 查询是错误的,但逻辑是我需要的:
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
我有下表:
id, range_1, range_2, periodOfDay
periodOfDay为0, 1, 2
我的目标是使用
获取一个只有一个查询的数组有没有办法通过一个查询来实现这样的事情,而无需通过代码实现它?
非常感谢。
答案 0 :(得分:2)
使用条件聚合 - 即使用CASE
作为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;