gpt4 book ai didi

mysql 行到列与 group_concat 和计数?

转载 作者:行者123 更新时间:2023-11-29 01:03:59 24 4
gpt4 key购买 nike

我有 2 个表,users 和 follows。下面的表有一个名为状态的列。我想计算每个用户按状态分组的关注数。

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

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 和计数但没有用。有什么线索吗?

最佳答案

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

<罢工>

关于mysql 行到列与 group_concat 和计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com