MySQL-Filterungs-Timing von Where-Bedingungen und Having-Bedingungen bei Verwendung mit Aggregatfunktionen wo Filter vor der Aggregation Wenn eine Abfrage Aggregatfunktionen und Where-Bedingungen enthält, wie etwa Filter nach der Aggregation haben „Having“ wird beim Gruppieren verwendet, um die Gruppierungsergebnisse zu filtern und enthält normalerweise Aggregatfunktionen. Wählen Sie IP, MAX(ID) aus der App aus. GRUPPE NACH IP MIT MAX(id)>=5 Zuerst gruppieren, dann aggregieren und dann den Ergebnissatz filtern, bei dem das aggregierte Ergebnis größer oder gleich 5 ist Der Unterschied zwischen den beiden: wobei zuerst und dann die Aggregatfunktion ausgeführt wird. Having wird ausgeführt, nachdem die Aggregatfunktion ausgeführt wurde. Nachfolgend eine Ergänzung Es besteht die Anforderung, dass eine Tabelle ein Statusfeld hat (1: Erfolg, 2: Fehler usw.). Jetzt müssen wir die Datumsgruppierung verwenden, um die Anzahl der Elemente in verschiedenen Zuständen zu zählen. Schreiben Sie zuerst eine Unterabfrage Wählen Sie aa.logDate,aa.totalLogs , (wählen Sie count(1) aus dxp.dxp_handlermodel, wobei aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') und executeStatus=1) pendingLogs , (wählen Sie count(1) aus dxp.dxp_handlermodel, wobei aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') und executeStatus=2) successLogs , (wählen Sie count(1) aus dxp.dxp_handlermodel, wobei aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') und executeStatus=3) errorLogs , (wählen Sie count(1) aus dxp.dxp_handlermodel, wobei aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') und executeStatus=4) callbackErrorLogs aus ( wählen DATE_FORMAT( a.startTime, '%Y-%m-%d') logDate, Anzahl(1) Gesamtprotokolle von dxp.dxp_handlermodel ein Gruppieren nach DATE_FORMAT(a.startTime, '%Y-%m-%d') ) Die Ausführung ist ziemlich langsam, daher habe ich mich gefragt, ob ich zum Zählen Bedingungen hinzufügen könnte, und habe Folgendes gefunden: wählen DATE_FORMAT( Startzeit, '%Y-%m-%d') Logdatum, Anzahl(1) Gesamtprotokolle, Anzahl (wenn (ExecuteStatus = 1, true, null)) ausstehende Protokolle, Anzahl (wenn (ExecuteStatus = 2, true, null)) Erfolgsprotokolle, Anzahl (wenn (ExecuteStatus = 3, true, null)) Fehlerprotokolle, Anzahl(wenn(executeStatus=4,true,null)) RückrufFehlerprotokolle von dxp.dxp_handlermodel Gruppieren nach DATE_FORMAT(Startzeit, '%Y-%m-%d') Leicht verständlich und hocheffizient in der Umsetzung Es können auch andere Aggregatfunktionen verwendet werden, wie z. B. SUM und andere Aggregatfunktionen Praxisbeispiel: Wählen Sie die Anzahl (wenn (Erstellungsdatum < '2017-01-01' und Host-Profil-ID = '9294d2bf-f457-4fe5-9a36-e5f832310dc2', true, null)) aus dem Profilbesuchsprotokoll. -- Entspricht „select count(if(create_date < '2017-01-01',true,null)) count from profile_visit_log where host_profile_id = '9294d2bf-f457-4fe5-9a36-e5f832310dc2'“ Dies ist das Ende dieses Artikels. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen. Das könnte Sie auch interessieren:
|
>>: Methode zum Erkennen, ob IP und Port verbindbar sind
Wenn wir CSS-Webseitenlayouts erstellen, wissen wi...
Inhaltsverzeichnis 1. Logbezogene Dienste 2. Geme...
1. Laden Sie das Alpenbild herunter [root@DockerB...
Ich habe heute eine JSP-Seite geschrieben. Ich hab...
einführen In diesem Kapitel wird hauptsächlich de...
Wenn wir mit einer SQL-Anweisung konfrontiert wer...
<br />Dies ist eine Reihe von Tutorials, die...
MySQL meldet einen Fehler beim Ausführen einer Ab...
Inhaltsverzeichnis 1. Einfaches Seitenbeispiel 2....
1.MySQL-Replikationskonzept Dies bedeutet, dass d...
1) Geben Sie den Ordnerpfad ein, in dem die JDK-D...
Inhaltsverzeichnis Was ist ein Slot Grundlegendes...
Inhaltsverzeichnis Vorwort Design erreichen Zusam...
1. CSS realisiert eine feste Breite links und ein...
1. Überprüfen Sie den Zeichensatz der Datenbank D...