gpt4 book ai didi

java - Sqlite:带条件的嵌套选择

转载 作者:行者123 更新时间:2023-12-02 02:18:09 25 4
gpt4 key购买 nike

我对 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

我的目标是通过一个查询来获取一个数组

  • 记录总数
  • range_1 < 36 且 range_2 < 18 的记录总数
  • 36 < range_1 < 100 和 18 < range_2 < 100 的记录总数
  • range_1 > 100 36 且 range_2 > 100 的记录总数按 periodOfDay 分组。这意味着我想要相应 periodOfDay 的每个条件的总记录。

有没有一种方法可以只用一个查询来实现这样的事情,而无需通过代码实现?

非常感谢。

最佳答案

使用条件聚合 - 即使用 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;

关于java - Sqlite:带条件的嵌套选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48962541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com