sql >> Database >  >> RDS >> Mysql

Gegevens voor elk uur ophalen in MySQL

Soms moet u gegevens per uur ophalen of records voor elk uur ophalen in MySQL. In dit artikel zullen we bekijken hoe we gegevens voor elk uur in MySQL kunnen krijgen.


Hoe u voor elk uur gegevens in MySQL kunt krijgen

Hier zijn de stappen om gegevens voor elk uur in MySQL te krijgen. Stel dat u de volgende tabel verkoop(id, order_date, bedrag) . heeft

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 |
 +------+---------------------+--------+


Hoe gegevens voor elk uur in MySQL te krijgen

Hier is de SQL-query om gegevens voor elk uur in MySQL te krijgen.

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 |
 +------------------+-------------+

In de bovenstaande zoekopdracht groeperen we eenvoudig op order_date met de HOUR-functie en het totale bedrag kolom met de functie SUM.

De functie HOUR haalt het uurnummer op uit een bepaalde datum/tijd/datum/tijd-waarde, die kan worden opgegeven als een letterlijke tekenreeks of kolomnaam.

Als u uurwaarden wilt weergeven met AM/PM-notatie zoals 8AM, 9AM, enz., dan moet u de functie date_format gebruiken waarmee u het formaat van een bepaalde datum/tijd/datum/tijd-waarde kunt wijzigen, die kan worden opgegeven als een letterlijke tekenreeks of kolomnaam.

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 |
 +-------+-------------+

Een rapportagetool voor MySQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Efficiënt grote hoeveelheden gegevens invoegen met SQL

  2. Hoe verwijder ik voorloop- en volgspaties in een MySQL-veld?

  3. Tijdzone instellen in PHP en MySQL

  4. ORA-12557 TNS:protocoladapter niet laadbaar