2016-06-29 9 views
0

テーブルの特定のグループのみを合計する方法はありますか?mysqlはテーブルの特定のグループのみを合計します

KEYS/VALS 
A / 3 
B / 3 
B / 3 
C / 2 

これは、ストアドプロシージャと簡単なようだが、私はないです:私は

KEYS/VALS 
A / 1 
A / 2 
B / 3 
B / 3 
C / 1 
C / 1 

を持っていると私はAとCをグループ化することによって取得したいではなく、他のものなどB上記のようにあれば例えばそれが可能な場合は、クエリで確かに?

答えて

3

UNION ALL B部分と非Bパート:

select keys, sum(vals) 
from tablename 
where keys <> 'B' 
group by keys 
union all 
select keys, vals 
from tablename 
where keys = 'B' 
0

によって任意のグループ全体の結果セットに適用されますので、労働組合を使用して、この結果を達成することが可能なだけです。組合では、あなただけのクエリの1に適用されることにより、2つの独立したクエリ、したがって、グループを組み合わせることができます。

select keys, sum(vals) as vals 
    from yourtable 
    where keys in ('A','B') 
    group by keys 
union 
select keys, vals 
    from yourtable 
    where keys not in ('A','B') 
+0

UNION ALL照会下記お試しください行。 – jarlh

0

両方(B、3)を取得するには、

SELECT keys, SUM(vals) as vals 
FROM yourtable 
WHERE keys in ('A','C') 
GROUP BY keys 
+0

これは動作しません、あなたは他の答えに示されているようにすべての組合が必要です。 B行を除外します – shev72

関連する問題