2016-06-16 4 views
0

データと日付(yyyymmddなど)と時刻(hhmmssなど)が格納されたSQLテーブルがあります。 これで、1時間ごとのエントリ数のカウントを選択する必要があります。エントリの毎日1時間ごとにカウントするSQLクエリを作成できますか?

  • 最初のカウントは次のようになります。000000
  • 005959ティル第二には、次のようになります。010000

015959ゴマは、それが単一の選択でこれを行い、その後24数の配列を持つことが可能です結果?それ以外の場合は、24個の選択肢を作成して、必要なすべてのデータを取得する必要があります。

+0

MySQLやSQLサーバ? – scaisEdge

+0

これまでに何を試しましたか? – Alex

+0

ここでは、クエリのメインテーブルとして集計テーブルまたは数値テーブルを使用する必要があります。 –

答えて

1

機能別にグループを使用します。別のオプションは、時、分、秒のフィールドを作成することです。データは複製されますが、問題はありません。

CREATE TABLE test(id int, date varchar(8), time varchar(6)); 

INSERT INTO test VALUES(1,'20160616','015959'); 
INSERT INTO test VALUES(2,'20160616','015959'); 
INSERT INTO test VALUES(3,'20160616','025959'); 

    SELECT count(substr(time,1,2)), test.date 
    FROM test 
GROUP BY date, substr(time,1,2); 

出力:

count(substr(time,1,2)), date 
'2', '20160616' 
'1', '20160616' 

あなたがTIME列を持っている場合は、単に使用:あなたはdateことで、この数を持つ必要がない場合は

SELECT count(hour(time)), test.date 
    FROM test 
GROUP BY date, hour(time); 

、ちょうどselectから削除およびgroup by節。

0

私はHOUR機能を使うことができると思います。私はMYSQLを使用しませんが、この機能があるようです。それに関する構文をチェックするかもしれません。

SELECT HOUR(TheTimeField), COUNT(*) 
FROM TheTable 
GROUP BY HOUR(TheTimeField) 
ORDER BY HOUR(TheTimeField) 
関連する問題