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, 8518 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
Microsoft

Microsoft Telefonaktivierungs App

(17)

Tipp von alik47 zum Thema Microsoft ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Google Android
gelöst Android-Handy versehentlich (dauerhaft) gesperrt? (18)

Frage von FA-jka zum Thema Google Android ...

Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

DSL, VDSL
gelöst DSL 200m verlängern (11)

Frage von Angela44 zum Thema DSL, VDSL ...

Router & Routing
gelöst Fritzbox 7490 und Zyxel USG20 - Zugriff auf LAN der USG20 (8)

Frage von Sebbi87 zum Thema Router & Routing ...