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, 8850 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel Online Datum (10)

Frage von MegaGiga zum Thema Microsoft Office ...

Visual Studio
gelöst C-Sharp WPF ListView Select nur bei bestimmter Spalte (2 Fragen in einer) (3)

Frage von mayho33 zum Thema Visual Studio ...

Batch & Shell
Dateien nach Datum verschieben (4)

Frage von LKDNDK12 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(4)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft Office
Saubere HTML aus Word-Dokument (16)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Hosting & Housing
gelöst Webserver bei WIX, aber DNS Server wo anders (9)

Frage von laster zum Thema Hosting & Housing ...