1

簡単な架空の表を使用して説明できる質問があります。

テーブル「Drinks」には、次の3つのフィールドがあります。

  • Id(1..N)-主キー
  • 日付( '2012-09-19' ...)-各日付は非常に頻繁に発生する可能性があります
  • ホット(yesの場合は1、falseの場合は0)。

次のようなリストを作成したいと思います。

    Date         Total    Hot    Cold
    2012-09-19   14       6      8
    2012-09-10   21       18     3

等。

「コールド」フィールドは、(合計-ホット)として計算されると予想されるとおりです。

私がこれまでに得たものは次のとおりです。

    SELECT Date, count(*) AS Total FROM Drinks GROUP BY Date;

これにより、目的のテーブルが得られますが、もちろん「ホット」列と「コールド」列はありません。

このテーブルを一度に作成できるようにクエリを変更する方法はありますか?もちろん、PHPコードを使用して段階的にテーブルを作成することもできますが、それはおそらくエレガントな方法でも最速でもありません。

私は見て、学ぶことができてうれしいです... :)

4

2 に答える 2

2

句にCASEステートメントを追加できます。SELECT

SELECT Date, 
       count(*) AS Total,
        SUM(CASE WHEN Hot = 1 THEN 1 ELSE 0 END) totlHOT,
        SUM(CASE WHEN Hot = 0 THEN 1 ELSE 0 END) totalCold
FROM Drinks 
GROUP BY Date;
于 2012-09-19T15:21:22.340 に答える
0
SELECT Date,
    count(*) AS Total,
    SUM(Hot = 1) Hot,
    SUM(Hot = 0) Cold
FROM Drinks
GROUP BY Date;
于 2012-09-19T15:23:35.483 に答える