Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询:我有4行,需要将3行的结果添加到一行中,并保留最后一行不变_Mysql_Sql_Rows - Fatal编程技术网

Mysql 查询:我有4行,需要将3行的结果添加到一行中,并保留最后一行不变

Mysql 查询:我有4行,需要将3行的结果添加到一行中,并保留最后一行不变,mysql,sql,rows,Mysql,Sql,Rows,对于这个问题,我有一个棘手的问题。首先是守则: 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 B

对于这个问题,我有一个棘手的问题。首先是守则:

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
我在干什么

举个例子,我正在统计警方对不同类型用户的抢劫报告。在我的示例中,管理员用户报告了6起代码2抢劫等事件,如“where”子句中所示,事件必须是抢劫,也是代码2

这将产生以下结果:

+-----------------------+----------+
| user_type_description | Quantity |
+-----------------------+----------+
| Admin                 |        6 |
| Moderator             |        8 |
| Fully_registered_user |        8 |
| anonymous_user        |        9 |
+-----------------------+----------+
基本上,管理员、版主和完全注册的用户都是适当注册的用户。我需要将它们添加到结果中,结果显示如下:

+--------------+------------+
| Proper_users | Anonymous  |
+--------------+------------+
|           22 |          9 |
+--------------+------------+
我不擅长sql。感谢您的帮助。谢谢。

我会用a来解决它,但最好将此关联放在一个表中

WITH
user_type_categories
AS
(
    SELECT 'Admin' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'Moderator' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'Fully_registered_user' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'anonymous_user' AS [user_type_description] , 'Anonymous' AS [user_type_category]  
)
SELECT 
      CASE WHEN utc.[user_type_category] = 'Proper_users' THEN
        SUM(incident.user_id) 
      END AS [Proper_Users_Quantity]
     , CASE WHEN utc.[user_type_category] = 'Anonymous' THEN
        SUM(incident.user_id) 
      END AS [Anonymous_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]
    LEFT JOIN user_type_categories AS utc ON utc.[user_type_description] = [user_type].[user_type_description]
WHERE 
    [incident].[code] = 2
我可以用一个表来解决它,但最好将这个关联放在一个表中

WITH
user_type_categories
AS
(
    SELECT 'Admin' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'Moderator' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'Fully_registered_user' AS [user_type_description] , 'Proper_users' AS [user_type_category]  
    UNION SELECT 'anonymous_user' AS [user_type_description] , 'Anonymous' AS [user_type_category]  
)
SELECT 
      CASE WHEN utc.[user_type_category] = 'Proper_users' THEN
        SUM(incident.user_id) 
      END AS [Proper_Users_Quantity]
     , CASE WHEN utc.[user_type_category] = 'Anonymous' THEN
        SUM(incident.user_id) 
      END AS [Anonymous_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]
    LEFT JOIN user_type_categories AS utc ON utc.[user_type_description] = [user_type].[user_type_description]
WHERE 
    [incident].[code] = 2

您可以尝试基于当前结果集使用条件聚合函数

表达式时用大小写求和

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

您可以尝试基于当前结果集使用条件聚合函数

表达式时用大小写求和

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

您只需要条件聚合:

SELECT SUM( ut.user_type_description IN ('Admin', 'Moderator', 'Fully_registered_user') ) as Proper_users,
        SUM( ut.user_type_description IN ('anonymous_user') as anonymous
FROM incident i INNER JOIN
     user u
     ON i.user_id = u.user_id INNER JOIN
     user_type ut
     ON u.user_type = ut.user_type
WHERE i.code = 2;
注:

表别名使查询更易于编写和读取。 这使用了一个MySQL快捷方式来添加值——只需添加booelean表达式。
您只需要条件聚合:

SELECT SUM( ut.user_type_description IN ('Admin', 'Moderator', 'Fully_registered_user') ) as Proper_users,
        SUM( ut.user_type_description IN ('anonymous_user') as anonymous
FROM incident i INNER JOIN
     user u
     ON i.user_id = u.user_id INNER JOIN
     user_type ut
     ON u.user_type = ut.user_type
WHERE i.code = 2;
注:

表别名使查询更易于编写和读取。 这使用了一个MySQL快捷方式来添加值——只需添加booelean表达式。
用格式化表格显示示例数据和预期结果。。你可以使用和你的小组是奇怪的。。您选择的use user\U type.user\U type\U description但是您的group by user.user\U type我使用了您的链接,但是stackoverflow只是省略了空格。是的,我按用户类型分组,这是一个数字。0=管理员1=模块2=完全注册用户3=匿名。用户类型描述包含这些数字的文本描述。如果不显示示例数据,我就听不懂。好的!我想一下。我正在统计警方关于抢劫的报告,这些报告来自不同类型的用户。在我的示例中,管理员用户报告了6起代码2抢劫等事件,如“where”子句中所示,事件必须是抢劫,代码2希望这会有所帮助。将其放在您的问题上以提供更多信息..用格式化的表格显示示例数据和预期结果。。你可以使用和你的小组是奇怪的。。您选择的use user\U type.user\U type\U description但是您的group by user.user\U type我使用了您的链接,但是stackoverflow只是省略了空格。是的,我按用户类型分组,这是一个数字。0=管理员1=模块2=完全注册用户3=匿名。用户类型描述包含这些数字的文本描述。如果不显示示例数据,我就听不懂。好的!我想一下。我正在统计警方关于抢劫的报告,这些报告来自不同类型的用户。在我的示例中,管理员用户报告了6起代码2抢劫等事件,如“where”子句中所示,事件必须是抢劫,代码2也希望能有所帮助。将其放在您的问题上,以提供更多信息..天哪,鳄梨酱。我不允许写这个代码,但我会注意这个解决方案。神圣的鳄梨酱。我不允许输入此代码,但我会注意此解决方案。