对于这个问题我有一个棘手的问题。首先是代码:
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
。如有任何帮助,我们将不胜感激。谢谢。 最佳答案
您可以尝试使用基于当前结果集的条件聚合函数。SUM
和CASE WHEN
表达式。
SELECT SUM(CASE WHEN user_type_description IN ('Admin','Moderator','Fully_registered_user') THEN Quantity END) Proper_users,
SUM(CASE WHEN user_type_description = 'anonymous_user' THEN Quantity END) Anonymous
FROM (
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
) t1