mysql - 按“状态”和“用户”字段分组
问题描述
我有像这样的表结构
users(user_id, username);
feedback(id, customer_id, user_id, status)
status
会在哪里['scheduled', 'failed', 'cancelled']
;
我想要这样的结果
| Username | scheduled count | failed count | cancelled count |
|---------- |----------------- |-------------- |----------------- |
| Sarah | 10 | 5 | 2 |
| Alex | 8 | 7 | 5 |
我尝试了很多,但未能通过group by
子句获得结果。它根据用户名而不是状态给出结果。
我尝试了一些查询
sql> select users.username, count(*) as cal
from feedback
join users on users.user_id = feedback.user_id
group by feedback.user_id, feedback.status
sql> select users.username, count(*) as cal
from feedback
join users on users.user_id = feedback.user_id
group by feedback.user_id
等等
解决方案
您可以进行聚合:
select u.username,
sum(status = 'scheduled') as scheduled_count,
sum(status = 'failed') as failed_count ,
sum(status = 'cancelled') as cancelled_count
from user u inner join
feedback f
on f.user_id = u.user_id
group by u.username;
推荐阅读
- rust - 如何将 Into 的引用传递给另一个函数?
- python - 在主线程外运行 fastapi gunicorn
- django - django-allauth AUTHENTICATED_LOGIN_REDIRECTS 不起作用
- python - 在两条切线python之间拟合多项式
- flutter - 颤振:我应该在页面中测试什么?
- python - 如何获取特定行号的日期时间索引值
- c++ - 在 linux 上,使用 C/C++ 编程时,我应该使用什么函数来输入密码?
- c# - 显示一些重复返回的 ASP 中继器
- python - 无法在 MacOS BigSur 中删除 Python 的符号链接
- mongodb - 运行 npm start 时在控制台中从 Mongodb Atlas 获取数据,但无法获取 URL