Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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行到列,包含组\u concat和count?_Mysql_Count_Group Concat - Fatal编程技术网

mysql行到列,包含组\u concat和count?

mysql行到列,包含组\u concat和count?,mysql,count,group-concat,Mysql,Count,Group Concat,我有两个表,用户和追随者。下表有一个名为status的列。我想计算每个用户按状态分组的跟踪次数 下面的查询返回每个用户的每个状态类型的记录 SELECT users.name as user_name, f.status, count(f.id) FROM users JOIN application_follows f ON f.user_id = users.id GROUP BY users.id, f.status ORDER BY users.id 返回如下内容: user_nam

我有两个表,用户和追随者。下表有一个名为status的列。我想计算每个用户按状态分组的跟踪次数

下面的查询返回每个用户的每个状态类型的记录

SELECT users.name as user_name, f.status, count(f.id) 
FROM users
JOIN application_follows f ON f.user_id = users.id
GROUP BY users.id, f.status
ORDER BY users.id
返回如下内容:

user_name     status     count

mike          new         10
mike          old         5
tom           new         8
tom           old         9
但我想要更友好的东西,比如:

user_name     new    old

mike          10      5
tom           8       9
尝试使用group_concat和count,但不起作用。有什么线索吗

SELECT  user_name, 
        MAX(CASE WHEN status = 'new' THEN totalFollowers ELSE NULL END) `NEW`,
        MAX(CASE WHEN status = 'old' THEN totalFollowers ELSE NULL END) `OLD`
FROM
    (
        SELECT  users.name as user_name, 
                f.status, 
                count(f.id) totalFollowers 
        FROM    users
                LEFT JOIN application_follows f 
                    ON f.user_id = users.id
        GROUP BY users.id, f.status
    ) derivedTable
GROUP BY user_name

或者可能(不确定这一点)

SELECT  users.name as user_name, 
        MAX(CASE WHEN f.status = 'new' THEN count(f.id) ELSE NULL END) `NEW`, 
        MAX(CASE WHEN f.status = 'old' THEN count(f.id) ELSE NULL END) `OLD`
FROM    users
        LEFT JOIN application_follows f 
            ON f.user_id = users.id
GROUP BY users.id, f.status