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

MySQLで1時間ごとにデータを取得する方法

    MySQLでは、1時間ごとのデータを取得したり、1時間ごとにレコードをフェッチしたりする必要がある場合があります。この記事では、MySQLで1時間ごとにデータを取得する方法を見ていきます。


    MySQLで1時間ごとにデータを取得する方法

    MySQLで1時間ごとにデータを取得する手順は次のとおりです。次のテーブルがあるとしますsales(id、order_date、amount)

    mysql> create table sales(id int, 
               order_date datetime, 
               amount int);
    
     mysql> insert into sales(id, order_date, amount)
          values(1, '2021-02-02 08:15:00',250),
          (2, '2021-02-02 08:30:00',200),
          (3, '2021-02-02 08:55:00',150),
          (4, '2021-02-02 09:15:00',125),
          (5, '2021-02-02 09:30:00',250),
          (6, '2021-02-02 09:45:00',200),
          (7, '2021-02-02 10:15:00',180),
          (8, '2021-02-02 10:30:00',125),
          (9, '2021-02-02 10:45:00',200),
          (10, '2021-02-02 11:15:00',250),
          (11, '2021-02-02 11:30:00',150),
          (12, '2021-02-02 11:45:00',200);
    
     mysql> select * from sales;
     +------+---------------------+--------+
     | id   | order_date          | amount |
     +------+---------------------+--------+
     |    1 | 2021-02-02 08:15:00 |    250 |
     |    2 | 2021-02-02 08:30:00 |    200 |
     |    3 | 2021-02-02 08:55:00 |    150 |
     |    4 | 2021-02-02 09:15:00 |    125 |
     |    5 | 2021-02-02 09:30:00 |    250 |
     |    6 | 2021-02-02 09:45:00 |    200 |
     |    7 | 2021-02-02 10:15:00 |    180 |
     |    8 | 2021-02-02 10:30:00 |    125 |
     |    9 | 2021-02-02 10:45:00 |    200 |
     |   10 | 2021-02-02 11:15:00 |    250 |
     |   11 | 2021-02-02 11:30:00 |    150 |
     |   12 | 2021-02-02 11:45:00 |    200 |
     +------+---------------------+--------+


    MySQLで1時間ごとにデータを取得する方法

    これは、MySQLで1時間ごとにデータを取得するためのSQLクエリです。

    mysql> select hour(order_date),sum(amount)
           from sales
           group by hour(order_date);
     +------------------+-------------+
     | hour(order_date) | sum(amount) |
     +------------------+-------------+
     |                8 |         600 |
     |                9 |         575 |
     |               10 |         505 |
     |               11 |         600 |
     +------------------+-------------+

    上記のクエリでは、 order_dateでグループ化するだけです。 HOUR関数を使用して金額を集計します SUM関数を使用した列。

    HOUR関数は、指定された日付/時刻/日時の値から時間番号を取得します。これは、リテラル文字列または列名として指定できます。

    8AM、9AMなどのAM / PM表記を使用して時間値を表示する場合は、date_format関数を使用する必要があります。この関数を使用すると、特定の日付/時刻/日時値の形式を変更できます。リテラル文字列または列名。

    mysql> select date_format(order_date,'%H %p') as hour,
            sum(amount) as total_sales
            from sales
            group by date_format(order_date,'%H %p');
     +-------+-------------+
     | hour  | total_sales |
     +-------+-------------+
     | 08 AM |         600 |
     | 09 AM |         575 |
     | 10 AM |         505 |
     | 11 AM |         600 |
     +-------+-------------+

    MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. エンティティフレームワークを使用してストアドプロシージャを実行する

    2. Ansibleを使用したPostgreSQLのデプロイとメンテナンス

    3. 生成された列とは何ですか?

    4. pg_upgradeを使用してLinuxでTimescaleDBとPostGISを使用してPostgreSQL11をPostgreSQL13にアップグレードする