gpt4 book ai didi

mysql - SQL:使用单个查询计算不同的 where 情况

转载 作者:行者123 更新时间:2023-11-29 10:04:44 27 4
gpt4 key购买 nike

例如,我有一个表记录用户查看和下载文件的事件,

file_id    user    activity
2 Tim view
1 Ron view
1 Ron view
2 Tim download
2 Ron view
1 Ron view
2 Ron download

理想的选择结果是这样的,

file_id    viewed_by    views    downloaded_by    downloads
1 1 3 0 0
2 2 2 2 2

我能做的是在两个独立的查询中获取浏览数据和下载数据,

COUNT(*), COUNT(DISTINCT user)
FROM table
WHERE activity = 'view'
GROUP BY file_id

(and then do another query for downloads)

是否可以在单个查询或子查询中执行此操作?

最佳答案

您可以尝试使用条件聚合来仅计算行数,其中事件使用 CASE 表达式匹配 View 或下载。

SELECT file_id,
count(DISTINCT CASE activity
WHEN 'view' THEN
user
END) viewed_by,
count(CASE activity
WHEN 'view' THEN
user
END) views,
count(DISTINCT CASE activity
WHEN 'download' THEN
user
END) downloaded_by,
count(CASE activity
WHEN 'download' THEN
user
END) downloads
FROM elbat
GROUP BY file_id;

关于mysql - SQL:使用单个查询计算不同的 where 情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52142022/

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