Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 使用group by对不同字段进行计数_Mysql - Fatal编程技术网

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;