gpt4 book ai didi

MySQL 对具有条件的列进行行求和

转载 作者:行者123 更新时间:2023-11-29 18:03:59 24 4
gpt4 key购买 nike

我有下表

+--------+----+----+----+----+----+----+
| userid | z0 | z1 | z2 | z3 | z4 | z5 |
+--------+----+----+----+----+----+----+
| 4711 | 0 | 1 | 1 | 0 | 0 | 0 |
| 4712 | 1 | 1 | 8 | 0 | 5 | 0 |
| 4713 | 3 | 5 | 1 | 0 | 0 | 0 |
| 4714 | 0 | 4 | 2 | 0 | 11 | 0 |
+--------+----+----+----+----+----+----+

该表记录在特定时间范围内发生的事件数量。即,在给定时间范围内(0-4、4-8、8-12、12-16、16-20、20-24 点)某个用户 ID 对网站的页面浏览量。

我想使用 SQL 计算以下内容:
有多少个时间范围(每个用户)至少有一次访问?
有多少个时间范围(每个用户)至少有 k 次访问 (k=5,10)?

期望的结果:

+--------+--------+--------+---------+
| userid | visit1 | visit5 | visit10 |
+--------+--------+--------+---------+
| 4711 | 2 | 0 | 0 |
| 4712 | 4 | 2 | 0 |
| 4713 | 3 | 1 | 0 |
| 4714 | 3 | 1 | 1 |
+--------+--------+--------+---------+

到目前为止我所拥有的:
对于以下问题:“(每个用户)有多少个时间范围至少有一次访问?”我尝试过类似的方法,但没有成功:

SELECT 
SUM(
CASE WHEN z0>0 THEN 1 ELSE 0 END
CASE WHEN z1>0 THEN 1 ELSE 0 END
CASE WHEN z2>0 THEN 1 ELSE 0 END
CASE WHEN z3>0 THEN 1 ELSE 0 END
CASE WHEN z4>0 THEN 1 ELSE 0 END
CASE WHEN z5>0 THEN 1 ELSE 0 END
) AS visit1
FROM timetable ;

最佳答案

修复架构后,有效的查询可能如下所示:

SELECT userid
, SUM(k>=1) visit1
, SUM(k>=5) visit5
, SUM(k>=10) visit10
FROM my_table
GROUP
BY userid;

关于MySQL 对具有条件的列进行行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079161/

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