2017-11-03 14 views
0

ことでここで私はカウント個別分野

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 

、出力をやろうとしているMA:

+------------+--------------+--------+ 
| 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  | 
+------------+--------------+--------+ 

が期待していますnb_partとSponsoによるグループの合計を数えますが、私のクエリにはこだわっています

+0

ありsource_id' 'のための4つの異なる値があると' source_id' BY GROUPが彼らのために4つの異なるグループを生成します。 – axiac

答えて

1

source_idの最大数とsource_idの数がsponsoと異なるように思えます。 "Per sponso"はSQLのGROUP BY sponsoに変換されます。

SELECT sponso, MAX(source_id) AS source_id, COUNT(DISTINCT source_id) AS nb_part 
FROM buzzes 
WHERE type = 3 AND sponso_id != 0 
GROUP BY sponso 
ORDER 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; 
関連する問題