对于这个问题,我有一个棘手的问题。首先是代码:
SELECT user_type.user_type_description,COUNT(incident.user_id) as Quantity
FROM incident
INNER JOIN user ON incident.user_id=user.user_id
INNER JOIN user_type ON user.user_type=user_type.user_type
WHERE incident.code=2
GROUP BY user.user_type
我在干什么?
例如,我在数警察的抢劫报告,是由不同类型的用户制作的。在我的示例中,“admin”用户报告了6起代码为“2”(抢劫)的事件,以此类推,如“where”子句所示(事件必须是抢劫,也是代码2)。
这将产生以下结果:
+-----------------------+----------+
| user_type_description | Quantity |
+-----------------------+----------+
| Admin | 6 |
| Moderator | 8 |
| Fully_registered_user | 8 |
| anonymous_user | 9 |
+-----------------------+----------+
基本上 Admin,Moderator and Fully_registered_user
是 appropriately registered users
. 我需要在结果中添加它们,结果显示如下:
+--------------+------------+
| Proper_users | Anonymous |
+--------------+------------+
| 22 | 9 |
+--------------+------------+
我不善于与人相处 sql
. 感谢您的帮助。谢谢。
3条答案
按热度按时间xhv8bpkk1#
您可以尝试使用基于当前结果集的条件聚合函数。
SUM
与CASE WHEN
表情。dy2hfwbg2#
我会用cte来解决这个问题,但最好把这个关联放在一个表中。
xggvc2p63#
您只需要条件聚合:
笔记:
表别名使查询更易于编写和读取。
它使用mysql快捷方式来添加值——只需添加booelean表达式。