Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

SELECT Datum gruppieren in Stunden

Frage Entwicklung Datenbanken

Mitglied: EvilMoe

EvilMoe (Level 2) - Jetzt verbinden

12.05.2011 um 18:50 Uhr, 8404 Aufrufe, 2 Kommentare

Hallo,


ich wähle aus meiner DB Werte der letzten 2 Stunden aus um diese in Form einer Statistik auszugeben.
Ich habe ca für alle 5min einen Eintrag. Der Wert kann varieren. Nun möchte ich ca. jede 30min oder in einen Stundenschritt den Maximalwert haben.

Den Maximalwert zu bestimmen ist kein Problem, gibt ja MAX.

Nun weiß ich nicht wie ich das mit dem Datum lösen kann.
Die Spalte "date" ist im Format: 0000-00-00 00:00:00

Bisher sieht das dann so aus
01.
SELECT date, MAX(wert) FROM `Tabelle` 
02.
WHERE DATE_SUB(CURDATE(),INTERVAL 2 DAY) <= date 
03.
GROUB BY (Hier müsste ich dann die Zeit gruppieren)

Ich könnte es auch mit PHP "sortieren". Aber vielleicht weiß jemand wie ich das mit SQl machen kann.
Es müsste dann so aussehen das z.B 17:31 zu 17:30 gruppiert wird, bis 17:44.

17:45 wird dann zu 18Uhr grupiert etc. Genauso dann 15:14 dann zu 15:00.

Ich hoffe ich konnte es einiger maßen gut erklären.

Ich hoffe das jemand mir weiterhelfen kann.
Mitglied: Biber
12.05.2011 um 19:17 Uhr
Moin EvilMoe,

in SQL bin ich auch nicht so fit, aber ich würde es in der GROUP BY-Clause so versuchen:

01.
... 
02.
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) ) 
...wenn eine Differenzierung nach Stunden reicht.

Wenn es feiner sein soll, hier für Halbstundentakt:
01.
... 
02.
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) ) , CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 30 THEN 1 ELSE 2 END

Wenn es noch feiner sein soll, hier für Viertelstundentakt:
01.
... 
02.
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) ) ,  
03.
           CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 15 THEN 1  
04.
           CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 30 THEN 2  
05.
           CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 45 THEN 3  
06.
           ELSE 4  
07.
         END
ungetestet

Grüße
Biber
Bitte warten ..
Mitglied: EvilMoe
12.05.2011 um 19:32 Uhr
Moin Biber,

du hast dich wohl unterschätzt was SQL angeht ;)

Funktioniert so wunderbar.


Vielen Dank!


Nachtrag: Da meine Einträge nie genau auf Minute 0 oder 30 sind habe ich noch folgendes ergänzt.
Im Select
01.
CASE WHEN MINUTE( TIME( date_played ) ) < 30 THEN '0' ELSE '30' END as minute
So habe ich alle Minuten entweder genau 30 oder 0.
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Windows Userverwaltung
gelöst Datum einer Gruppenmitgliedschaft (1)

Frage von slansky zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...