2017-04-24 4 views
1

マイmysqlデータベースは次のようなもので、case、group by、order byステートメントを適切に使用するのには苦労しています。サンプルデータセット:日付とケースステートメントでグループ化するSQL構文

ID  Date   Direction 
1  2017-04-01 1 
2  2017-04-01 1 
3  2017-04-01 -1 
4  2017-04-01 1 
5  2017-04-01 -1 
6  2017-04-01 1 
7  2017-04-02 -1 
8  2017-04-02 -1 
9  2017-04-02 -1 
10  2017-04-02 1 
11  2017-04-02 -1 
12  2017-04-03 -1 

私はクエリは、次のレコードセットを返すように日付でこのテーブルとグループを集約するための最良の方法を理解しようとしています。

DATE   positive  negative 
2017-04-01 4    2 
2017-04-02 1    4 
2017-04-03 0    1 

:以下「正」の列は、単に方向> 0は同様に、「負」の欄は、そうのような方向< 0方向の列の数である方向列(上記)の数であります私はこのトピックのSOスレッドの数十を確認しました

SELECT DATE, 
     CASE 
      WHEN direction < 0 THEN 'negative' 
      WHEN direction > 0 THEN 'positive' 
     END AS updownType, count(*) AS updownCount 
     FROM table WHERE DATE BETWEEN '2017-04-01' AND '2017-04-03' 
     GROUP BY DATE, updownType 
     ORDER BY DATE ASC 

が、私はまだ探しています何のちょうど間で実行していない:私は試してみました。どんな提案も評価されています

答えて

1

下記を参照

SELECT DATE, 
     count(CASE WHEN direction < 0 THEN '1' END) AS negative, 
     Count(CASE WHEN direction > 0 THEN '1' END) AS positive 
     FROM table WHERE DATE BETWEEN '2017-04-01' AND '2017-04-03' 
     GROUP BY DATE 
     ORDER BY DATE ASC 
+0

ありがとうございます! – Gunnar

関連する問題