Uhrzeiten nach 15min gruppieren und letzten 8 Gruppen anzeigen

haiflosse

Benutzer
Beiträge
15
Hallo!
Ich gebe in einer Tabelle verschiedene Daten mit der aktuellen Uhrzeit ein.
z.B.
Artikel | Anzahl | Uhrzeit
Bier1 | 3 | 23:35
Bier1 | 2 | 23:38
Bier2 | 5 | 23:40
Bier2 | 5 | 23:44
Bier1 | 5 | 23:50
Bier1 | 4 | 23:52
Bier2 | 6 | 23.54
Bier1 | 3 | 0:04
Bier1 | 6 | 0:06
Boer2 | 4 | 0:07
....
Ich möchte nun die Eingaben nach 15min gruppieren und die Anzahl summieren und die letzten 8 Gruppen anzeigen.
z.b.
Bier1 | 5 | 23:45
Bier2 | 10 | 23:45
Bier1 | 9 | 00:00
Bier2 | 6 | 00:00
Bier1 | 9 | 00:15
Bier2 | 4 | 00:15
Hoffe es kann mir hier jemand weiterhelfen, wie ich dies mit einer mysql Abfrage durchführen kann.
Danke
 
Werbung:
also im Prinzip suchst Du sowas wie hier, oder?

Code:
postgres=# select * from haiflosse ;
 artikel | anzahl |        zeit         
---------+--------+---------------------
 Bier1   |      3 | 2022-10-16 20:31:00
 Bier1   |      5 | 2022-10-16 20:33:00
 Bier2   |      4 | 2022-10-16 20:32:00
 Bier1   |     13 | 2022-10-16 20:51:00
 Bier1   |     13 | 2022-10-16 20:51:00
(5 rows)

postgres=# select date_bin('15 minutes',zeit,'2000-01-01'), artikel, sum(anzahl) from haiflosse group by 1,2 order by 1 asc;
      date_bin       | artikel | sum 
---------------------+---------+-----
 2022-10-16 20:30:00 | Bier1   |   8
 2022-10-16 20:30:00 | Bier2   |   4
 2022-10-16 20:45:00 | Bier1   |  26
(3 rows)

postgres=#
 
Danke für die Antwort.
Sieht gut aus. Funktioniert dies auch über Mitternacht.
Ich habe es bei meiner Datenbank einmal versucht bekomme aber da folgende Fehlermeldung:
#1370 - execute command denied to user 'haiflosse'@'%' for routine 'db_test.date_bin'

Mein SQL sieht wie folgt aus:

select date_bin('15 minutes',uhrzeit,'2000-01-01'), getraenk, sum(preis) from menge group by 1,2 order by 1 asc;

lg
 
ok, ich habe:

Code:
postgres=# select version();
                                                              version                                                               
------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 15beta1 (Debian 15~beta1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
(1 row)

scheint etwas höher als Deine zu sein ...
 
So gehts auch in MySQL.

Code:
SELECT
  CONCAT(DATE_FORMAT(Uhrzeit, '%d.%m.%Y %H:'),lpad(CAST(MINUTE(Uhrzeit)/15 AS UNSIGNED)*15,2,'0')) as Uhrzeit
  , Artikel
  , SUM(Anzahl) AS Anzahl
FROM bier
GROUP BY 1,2;



Beispiel:
Code:
mysql> select * from bier;
+----+---------+--------+---------------------+
| id | Artikel | Anzahl | Uhrzeit             |
+----+---------+--------+---------------------+
|  1 | Bier1   |      3 | 2022-10-16 20:04:00 |
|  2 | Bier1   |      5 | 2022-10-16 20:33:00 |
|  3 | Bier2   |      4 | 2022-10-16 20:32:00 |
|  4 | Bier1   |     13 | 2022-10-16 20:51:00 |
|  5 | Bier1   |     13 | 2022-10-16 20:51:00 |
+----+---------+--------+---------------------+
5 rows in set (0.00 sec)

mysql> SELECT
    ->   CONCAT(DATE_FORMAT(Uhrzeit, '%d.%m.%Y %H:'),lpad(CAST(MINUTE(Uhrzeit)/15 AS UNSIGNED)*15,2,'0')) as Uhrzeit
    ->   , Artikel
    ->   , SUM(Anzahl) AS Anzahl
    -> FROM bier
    -> GROUP BY 1,2;
+------------------+---------+--------+
| Uhrzeit          | Artikel | Anzahl |
+------------------+---------+--------+
| 16.10.2022 20:00 | Bier1   |      3 |
| 16.10.2022 20:30 | Bier1   |      5 |
| 16.10.2022 20:30 | Bier2   |      4 |
| 16.10.2022 20:45 | Bier1   |     26 |
+------------------+---------+--------+
4 rows in set (0.00 sec)

mysql>
 
D.h. ich benötige eine mysql Version mit PostgreSQL - oder?
Spielt die mysql Version selbst auch eine Rolle oder ist dies egal?
Es gibt keine MySQL-Version mit PostgreSQL. PostgreSQL ist eine eigenständige Datenbank und hat mit MySQL nichts zu tun, damit ist die MySQL-Version egal, den Code aus #2 wirst du nicht verwenden können, BerndB hat aber ja in #10 geschrieben wie es mit MySQL funktioniert. Aber warum verwendest du eigentlich so eine alte, nicht mehr unterstützte Version von MySQL und nicht 8.0 (oder zumindest 5.7)?
 
Werbung:
Zurück
Oben