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

Django2.* + Mysql5.7-Entwicklungsumgebung Integrations-Tutorial-Diagramm

Umfeld: MAC_OS 10.12 Python 3.6 MySQL 5.7.25 Djan...

Zukunftsweisendes Allround-Webdesign: Progressive Enhancement

<br />Original: Progressive Enhancement vers...

Definition und Verwendung des MySQL-Cursors

Erstellen eines Cursors Erstellen Sie zunächst ei...

So stellen Sie mit Node-Red eine Verbindung zur MySQL-Datenbank her

Um Node-red mit der Datenbank (mysql) zu verbinde...

Implementierungsprinzip und Nutzungsanalyse des Apache Bench-Stresstest-Tools

1: Durchsatz (Anfragen pro Sekunde) Eine quantita...

Was soll ich tun, wenn ich die Quelldatei einer Webseite nicht anzeigen kann?

F: Wenn Sie Outlook oder IE verwenden, wird beim ...

Implementierung der Formatierung von Partitionen und der Einbindung in Centos7

Unter Linux treten häufig Situationen auf, in den...