sql - 将具有相同 ID 但具有条件的不同事件日志的行汇总在一起
问题描述
一个表有 3 个不同的字段,第一个是user_id
, event_log
, uploaded_files
。
user_id event_log uploaded_files
--------------------------------------------
1 0001 1
1 0002 1
1 0003 1
2 0004 5
2 0005 2
2 0006 1
3 0007 1
3 0008 4
我的目标是将 user_id 行合并为一个并汇总 upload_files 列,同时实现诸如total files > 1 and <6
. 理想情况下,我想要这样:
user_id total_files
--------------------------
1 3
3 5
到目前为止,我只能到达:
user_id total_files
--------------------------
1 3
2 8
3 5
我已经通过使用到达那里:
SELECT user_id, sum(files_uploaded) total_files
FROM my_table
GROUP BY user_id
ORDER BY user_id;
我试图添加条件:ORDER BY user_id WHERE total_files >1 AND total_files <6
,但我不能。有什么我想念的吗?
解决方案
您不能在WHERE
子句中使用聚合表达式;为此,您需要使用以下HAVING
子句:
SELECT user_id, sum(files_uploaded) total_files
FROM my_table
GROUP BY user_id
HAVING SUM(files_uploaded) > 1 AND SUM(files_uploaded) < 6
ORDER BY user_id;
用户 ID | total_files ------: | ----------: 1 | 3 3 | 5
推荐阅读
- r - NBA 四分之一秒剩余秒数转换为比赛剩余秒数
- python - Python数据表(或熊猫):基于两列的数据帧的棘手排序
- java - 带有 SpinnerNumberModel 的 JSpinner:是否验证输入的数字?
- c# - Blazor WebAssembly - 找不到适合类型“JwtSecurityTokenHandler”的构造函数
- c# - C# 帮助在更新前验证表数据
- sharepoint-online - 在流程中使用“发送 Http 操作”更新人员组字段时出错
- node.js - Nodejs:Twitter Image Bot 上的 ENOENT
- c - 在 C 中使用命名管道读取和写入同一个文件
- python - 安装 PyAudio
- python - 我不明白有两个输入的 map_fn