如何使用COUNT、GROUP BY、HAVING查询得到的id执行后续SQL查询
SQL查询问题修正
错误点说明
- IN运算符要求子查询仅返回用于匹配的单个列,你的子查询同时返回了
id和num_days两列,无法和外层的id字段完成匹配校验 - 原SQL末尾存在多余的双引号,会触发语法报错
修正后查询语句
SELECT id, date FROM daily_activity WHERE id IN ( SELECT id FROM daily_activity GROUP BY id HAVING COUNT(id) < 31 ) ORDER BY id, date
可选优化写法(窗口函数实现,仅需一次表扫描,性能更优)
SELECT id, date FROM ( SELECT id, date, COUNT(*) OVER(PARTITION BY id) AS day_count FROM daily_activity ) AS activity_stat WHERE day_count < 31 ORDER BY id, date
内容的提问来源于stack exchange,提问作者Martin Wickett
相关产品推荐
相关产品推荐

