gpt4 book ai didi

php - 有条件分组

转载 作者:行者123 更新时间:2023-11-29 04:33:12 25 4
gpt4 key购买 nike

我必须在 php 中显示一些数据,数据的结构是这样的

id  channel_id  added_by

1 1 9999
2 1 195
3 8 9999
4 1 180
5 1 195
6 8 9999
7 1 9999
8 1 195
9 8 9999

我只需要像这样显示 channel id = 1 的总数

channel_id   total  added_by

1 2 9999
1 4 -1

它对所有 channel id的点赞数由9999加起来,所有其他加起来的假设为(-1)

我可以做到这一点

SELECT channel_id, added_by, sum(id) as total 
from table
where channel_id = 1
group by channel_id ,added_by;

但它给出了以下结果,这不是我需要的

channel_id  added_by total 
1 9999 2
1 195 3
1 180 1

最佳答案

使用 CASE..WHEN表达式,您可以确定一个“修改后的”added_by 值,并改为对修改后的值进行 GROUP BY

此外,SUM(id) 不会为您提供正确的行数。它宁愿将 id 值相加。您可以使用 COUNT(*)而是计算行数:

SELECT channel_id, 
CASE
WHEN added_by <> 9999 THEN -1
ELSE 9999
END AS modified_added_by,
COUNT(*) as total
FROM your_table_name
WHERE channel_id = 1
GROUP BY channel_id, modified_added_by

结果

| channel_id | modified_added_by | total |
| ---------- | ----------------- | ----- |
| 1 | -1 | 4 |
| 1 | 9999 | 2 |

View on DB Fiddle

关于php - 有条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53262733/

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