mysql - 需要帮助创建查询来汇总表中出现的次数

标签 mysql sql

我有一个包含如下数据的表:

event | session id | uid 
---------------------
foo   | 1          | a
bar   | 1          | a
foo   | 2          | b
cat   | 2          | b
cat   | 3          | a
cat   | 4          | c
foo   | 5          | c
cat   | 5          | c
foo   | 6          | b
foo   | 7          | a
dog   | 8          | c
dog   | 9          | b
bat   | 10         | c

我想创建一个查询以返回以下格式的结果:

uid | event | # event used | # of sessions for uid
a   | foo   | 2            | 4 
a   | bar   | 1            | 4
a   | cat   | 1            | 4
b   | foo   | 2            | 4
b   | cat   | 1            | 4
b   | dog   | 1            | 4
c   | cat   | 2            | 5
c   | foo   | 1            | 5
c   | dog   | 1            | 5
c   | bat   | 1            | 5

我尝试使用:

select uid, event, count(*) from events where uid in (select uid from events group by uid) group by uid; 

但这并没有按预期工作。

任何帮助将不胜感激。

最佳答案

select t1.uid, t1.event, count(*) as `# event used`, t2.total_events as `# of sessions for uid`
form table t1
inner join (
   select uid, count(*) as total_events
   from table
   group by uid
) t2 on t2.uid = a.uid
group by t1.uid, t1.event, t2.total_events
order by t1.uid, `# event used` desc

关于mysql - 需要帮助创建查询来汇总表中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293986/

相关文章:

c# - sql 税和 odbc 代码不会插入?

php - While 循环显示不同行而不是同一行

php - 跨 2 个表的 Mysql SQL 查询 - 不确定如何正确执行

sql - 如何在函数中获取 PL PGSQL 错误代码?

sql - Oracle PLSQL 将日期时间截断为 15 分钟 block

java - 如何将日期对象的长值转换为日期

php - symfony doctrine 数据转储和重新加载不起作用

MySQL 组合键最佳实践

php - Update Ignore 如果更新值将为负

sql - STRING_AGG 未按预期运行