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

Beispielcode zur Implementierung eines 3D-Text-Hover-Effekts mit CSS3

In diesem Artikel wird der Beispielcode von CSS3 ...

Asynchrone JS ES6-Lösung

Inhaltsverzeichnis Erste Verwendung der Callback-...

Methode und Einführung der Tabellenindexdefinition in MySQL

Überblick Ein Index ist eine vom DBMS basierend a...

mysql5.7.21 UTF8-Kodierungsproblem und -Lösung in der Mac-Umgebung

1. Ziel: Ändern Sie den Wert des character_set_se...

Analysieren Sie, wie eine SQL-Abfrageanweisung in MySQL ausgeführt wird

Inhaltsverzeichnis 1. Übersicht über die logische...

MySQL-Optimierung: Cache-Optimierung (Fortsetzung)

In MySQL gibt es überall Caches. Wenn ich den Que...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

So konfigurieren Sie SSH für die Anmeldung bei Linux mit Git Bash

1. Generieren Sie zunächst die öffentlichen und p...

7 Möglichkeiten, Elemente mit CSS vertikal zu zentrieren

【1】Kennen Sie die Breite und Höhe des zentrierten...