私は多少このようになりますテーブルがあります。各id
のための今すぐSQL - 特定の値を持つカウント行
id value
1 0
1 1
1 2
1 0
1 1
2 2
2 1
2 1
2 0
3 0
3 2
3 0
を、私は0と1の出現箇所の数とのための出現箇所の数をカウントしたいです
:id n0 n1 total
1 2 2 5
2 1 2 4
3 2 0 3
が、私はこの文で最初と最後の行を取得するために管理:最終的な結果は次のようになりますので、そのID、(値は任意の整数とすることができます)
しかし、私はここから一種の迷子です。巨大な声明なしでこれを達成する方法に関するあらゆる指針? MySQLで
甘い、私は「SUM(条件)」があることを知りませんでした! – ryyst
@ryyst:MySQLは、条件式のブール結果を、偽ならば0、真ならば1に評価するという事実を利用するトリックです。各グループに渡って「SUM」を取ると、条件が真であるレコードの数が得られます。 – eggyal
また、他のすべての主要なDBMSで動作する、より表現力豊かで、 'COUNT(CASE WHEN value = 0 THEN 1 END)AS n0、...、...'を使用することもできます。ブール変換。詳細については、私の[ここでの質問](http://stackoverflow.com/questions/11340540/conditional-counting-performance-differences-in-using-sum-vs-count)を参照してください。 –