Mysql 使用group by对不同字段进行计数
在这里我想做什么Mysql 使用group by对不同字段进行计数,mysql,Mysql,在这里我想做什么 SELECT b.sponso , b.source_id , Count(Distinct b.source_id) As nb_part FROM buzzes b WHERE b.type = 3 AND b.sponso_id != 0 GROUP BY b.source_id , b.sponso 以及输出: +------------+--------------+--------+ | Sponso | source_id | nb_part |
SELECT b.sponso , b.source_id , Count(Distinct b.source_id) As nb_part
FROM buzzes b
WHERE b.type = 3 AND b.sponso_id != 0
GROUP BY b.source_id , b.sponso
以及输出:
+------------+--------------+--------+
| Sponso | source_id | nb_part |
+------------+--------------+--------+
| A | 954711 | 1 |
| A | 587741 | 1 |
| B | 321447 | 1 |
| B | 350 | 1 |
+------------+--------------+--------+
以及我期望得到的
+------------+--------------+--------+
| Sponso | source_id | nb_part |
+------------+--------------+--------+
| A | 954711 | 2 |
| B | 321447 | 2 |
+------------+--------------+--------+
我想按Sponso计算nb_part和group的总和,但我的查询陷入了困境似乎您需要每个Sponso的最大源id和不同源id的数量。在SQL中,Per sponso转换为GROUP BY sponso 或者,您可能希望对查询进行聚合:
SELECT sponso, MAX(source_id) AS source_id, SUM(nb_part) AS nb_part
FROM
(
SELECT b.sponso , b.source_id , Count(Distinct b.source_id) As nb_part
FROM buzzes b
WHERE b.type = 3 AND b.sponso_id != 0
GROUP BY b.source_id , b.sponso
)
GROUP BY sponso
ORDER BY sponso;
source_id有4个不同的值,GROUP BY source_id为它们生成4个不同的组。
SELECT sponso, MAX(source_id) AS source_id, SUM(nb_part) AS nb_part
FROM
(
SELECT b.sponso , b.source_id , Count(Distinct b.source_id) As nb_part
FROM buzzes b
WHERE b.type = 3 AND b.sponso_id != 0
GROUP BY b.source_id , b.sponso
)
GROUP BY sponso
ORDER BY sponso;