sql >> データベース >  >> RDS >> Mysql

1時間あたりのカウントを取得するためのMySQLクエリ

    これを解決するには、時間(00:00、01:00など)の24の値を含むテーブルを作成し、それと左(または右)結合を実行し、テーブルがnullを許可するため、24行すべてがテーブルに0行が含まれている場合、groupbyは正常に機能するはずです。

    結合を実行するときは、テーブルから1時間以外のすべてを切り捨てることを忘れないでください。そのため、関数の結果として、join onを呼び出して実行します。 このヘルプテーブルの値と同じにすることができます。

    次のクエリを使用して、testtimeテーブルに24個のtest_time値を入力した後にジョブを実行できます

    select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime 
    left join yourTable on test_time=hour(yourTableTime) 
    group by test_time
    

    これにより、テストテーブルの行に一致する値がない場合はカウントとして0が提供されますが、count(*)を使用すると、テーブルが空の場合でも、テーブルに1行しかない場合でも、0ではなく1で24行が提供されます。 0行の違いを区別することは不可能です。これは、次の2つの異なる行の結果が同じように見えるためです

    causeは両方とも1に等しい同じ結果行数を提供しますが、sumテクニックはこの行を異なる方法で処理します



    1. マネージドPostgreSQLクラウドソリューションのベンチマーク-GoogleCloud:パート3

    2. 推移性のあるMySQL結合(同じテーブル)で個別のペアを選択するにはどうすればよいですか?

    3. OracleのTO_CHAR(datetime)関数

    4. SQLServerでのINSERTまたはUPDATEのソリューション