mySql SQL-Abfrageoperation für statistische Mengen

mySql SQL-Abfrageoperation für statistische Mengen

Ich werde nicht viel Unsinn erzählen, schauen wir uns einfach den Code an ~

wählen Sie project_no,
Summe (Fall wenn Gerätestatus = 0, dann 1, sonst 0, Ende) als offTotal,
Summe (Fall wenn Gerätestatus = 1, dann 1, sonst 0, Ende) als Online-Gesamtsumme,
Summe(1)Gesamt
von iot_d_device
Gruppieren nach Projektnummer
Sortieren nach project_no 

Ergänzung: MySQL verwendet eine SQL-Anweisung, um mehrere statistische Ergebnisse abzufragen

Bei Mall-Projekten tritt zwangsläufig das Problem auf, dass Benutzer auf ihrer persönlichen Center-Seite die Anzahl der Bestellungen mit unterschiedlichem Status abfragen. Natürlich ist dieses Problem nicht schwierig. Sie können eine Methode auf der DAO-Ebene schreiben, die den Status als Eingabeparameter verwendet und jedes Mal einen anderen Statuswert übergibt, um nacheinander die Anzahl der Bestellungen im entsprechenden Status abzufragen.

Als ich heute die H5-Schnittstelle geschrieben habe, wollte ich es auf eine andere Art prüfen, nämlich die Anzahl der Bestellungen in mehreren Staaten über ein SQL abfragen. Ich habe online gesucht und fand die Methode durchführbar. Also habe ich sie ausprobiert und sie hat wie erwartet funktioniert.

Das Beispiel sieht wie folgt aus (die Daten werden nur zur Veranschaulichung des heutigen Problems verwendet und das Tabellendesign ist nicht streng. Geben Sie mir bitte nicht die Schuld):

SETZEN SIE FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Tabellenstruktur für mini_test_order
-- ----------------------------
Tabelle löschen, wenn `mini_test_order` vorhanden ist;
Tabelle „mini_test_order“ erstellen (
 `id` int(11) NICHT NULL,
 `order_no` varchar(32) DEFAULT NULL COMMENT 'Bestellnummer',
 `user_id` int(11) DEFAULT NULL COMMENT 'Benutzer-ID',
 `shop_id` int(11) DEFAULT NULL COMMENT 'Händler-ID',
 `order_status` tinyint(1) DEFAULT NULL COMMENT 'Bestellstatus',
 `create_time` int(10) DEFAULT NULL COMMENT 'Erstellungszeit',
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;
-- ----------------------------
-- Aufzeichnungen der Mini-Testbestellung
-- ----------------------------
INSERT INTO `mini_test_order` VALUES ('1', 'aaaaaaaaa', '11', '111', '1', '1573041313');
INSERT INTO `mini_test_order` VALUES ('2', 'bbbbbbbb', '11', '222', '1', '1573041313');
INSERT INTO `mini_test_order` VALUES ('3', 'cccccccccc', '11', '333', '2', '1573041313');
INSERT INTO `mini_test_order` VALUES ('4', 'dddddddd', '11', '222', '3', '1573041313');
INSERT INTO `mini_test_order` VALUES ('5', 'eeeeeeeeee', '11', '111', '4', '1573041313');
INSERT INTO `mini_test_order` VALUES ('6', 'ffffffffffffff', '11', '111', '3', '1573041313');
INSERT INTO `mini_test_order` VALUES ('7', 'gggggggg', '11', '222', '4', '1573041313');
INSERT INTO `mini_test_order` VALUES ('8', 'hhhhhhhhh', '11', '111', '4', '1573041313');
INSERT INTO `mini_test_order` VALUES ('9', 'iiiiiiiiiiiiiiiiiiiii', '11', '333', '3', '1573041313');
INSERT INTO `mini_test_order` VALUES ('10', 'jjjjjjjjjjjjjjjjjjjjjj', '11', '222', '1', '1573041313');

Die wichtigsten SQL-Anweisungen lauten wie folgt:

Wählen Sie ANZAHL (FALL Bestellstatus, wenn 1, dann 1 Ende) als "Status 1", ANZAHL (FALL Bestellstatus, wenn 2, dann 1 Ende) als "Status 2", ANZAHL (FALL Bestellstatus, wenn 3, dann 1 Ende) als "Status 3", ANZAHL (FALL Bestellstatus, wenn 4, dann 1 Ende) als "Status 4" aus "Mini-Testbestellung";

oder wie folgt:

WÄHLEN SIE ANZAHL (FALL, WENN Bestellstatus = 1, DANN 1 ENDE) ALS "Status 1", ANZAHL (FALL, WENN Bestellstatus = 2, DANN 1 ENDE) ALS "Status 2", ANZAHL (FALL, WENN Bestellstatus = 3, DANN 1 ENDE) ALS "Status 3", ANZAHL (FALL, WENN Bestellstatus = 4, DANN 1 ENDE) ALS "Status 4" AUS `mini_test_order`;

Natürlich sind SQL-Anweisungen nicht auf die beiden oben genannten Methoden beschränkt. Wer gerne mehr erfahren möchte, kann gerne eine ergänzende Nachricht hinterlassen.

Es gibt zwei Syntaxen für MySQL-Fall, wenn

1. Einfache Funktionen

CASE [Spaltenname] WHEN [Wert1] THEN [Ergebnis1]…ELSE [Standard] END

2. Suchfunktion

CASE WHEN [Ausdruck] THEN [Ergebnis1]…ELSE [Standard] END

Der Unterschied zwischen den beiden

Ersteres zählt alle möglichen Werte des Felds col_name auf, wenn der Wert die Bedingung value1 erfüllt;

Letzterer kann Urteile schreiben, und die Suchfunktion gibt nur den ersten Wert zurück, der die Bedingungen erfüllt, andere Fälle werden ignoriert.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der persistenten MySQL-Statistiken
  • Eine kurze Analyse der MySQL-Kardinalitätsstatistiken
  • MySQL-Beispiel zum Umwandeln des Geburtsdatums in das Alter und zum Gruppieren und Zählen der Personenanzahl
  • Beispielcode für Python zum Zählen von MySQL-Datenvolumenänderungen und Aufrufen von Schnittstellenalarmen
  • Gründe, warum MySQL 8.0-Statistiken ungenau sind
  • Analyse der Nutzung von Prozesssteuerungsfunktionen/Statistikfunktionen/Gruppierungsabfragen in MySql

<<:  CSS zur Implementierung von Sprites und Schriftsymbolen

>>:  Zusammenfassung der Probleme bei der Speicherplatzfreigabe unter Linux

Artikel empfehlen

Webprojektentwicklung VUE-Mischungs- und Vererbungsprinzip

Inhaltsverzeichnis Mischen Mixin-Hinweis (doppelt...

Sind Sie immer noch Select *?

Es gibt viele Gründe, warum eine Anwendung langsa...

So überwachen Sie Tomcat mit LambdaProbe

Einführung: Lambda Probe (früher bekannt als Tomc...

Detaillierte Erklärung des Vue-Mixins

Inhaltsverzeichnis Lokales Mixin Globale Mixins Z...

Detaillierte Erklärung zur Verwendung der JavaScript-Paging-Komponente

Die Paginierungskomponente ist eine häufige Kompo...

Detaillierte Erläuterung des Datenreaktionsprinzips von Vue

Dieser Artikel richtet sich hauptsächlich an diej...

Erläuterung der neuen Funktion von Hadoop 2.X, der Papierkorbfunktion

Durch Aktivieren der Papierkorbfunktion können Si...

Was tun, wenn der Auto-Increment-Primärschlüssel in MySQL aufgebraucht ist?

Im Vorstellungsgespräch sollten Sie folgende Szen...

So konfigurieren Sie die PDFLatex-Umgebung in Docker

Technischer Hintergrund Latex ist ein unverzichtb...

MySQL-Unterabfrage und Details zur Verknüpfungstabelle

Inhaltsverzeichnis 1. Was ist eine Unterabfrage? ...

Vue implementiert eine Komponente zur dynamischen Abfrageregelgenerierung

1. Dynamische Abfrageregeln Die dynamischen Abfra...