VorwortVor kurzem habe ich an einer Berichtsfunktion gearbeitet und es bestand die Anforderung, die Anzahl der Personen zu zählen, die in einem bestimmten Monat in jede Abteilung eintraten und sie verließen. Meine SchritteErmitteln Sie zunächst die Anzahl der Mitarbeiter SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Eintrittszeitpunkt!= '' ODER Eintrittsdatum IST NICHT NULL) und DATE_FORMAT(Eintrittsdatum, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname Datensätze abfragen Bei der Abfrage der Anzahl der Personen, die gekündigt haben, führt SQL Folgendes aus: SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Kündigungsdatum != '' ODER Austrittsdatum ist nicht NULL) und DATE_FORMAT(Eintrittsdatum, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname Ergebnismenge Die Daten, die ich will, sind diese Ich habe folgendes versucht1. Ich betrachte die beiden Abfrageergebnisse als zwei Tabellen und verwende Left Join. Ehrlich gesagt ist das Datenformat das, was ich möchte, aber ich denke, wenn die rechte Tabelle mehr Datensätze enthält, gibt es dann nicht weniger Daten, wenn ich diese Methode verwende? (Dasselbe gilt für die rechte Seite) 2. Ich verwende union all, was nicht die gewünschten Daten sind, um die beiden Ergebnisse direkt hinzuzufügen und vertikal zu verbinden 3. Ich habe select * from a,b verwendet und das Ergebnis ist das kartesische Produkt der beiden Tabellen. Ich werde das SQL für die obige Methode nicht veröffentlichen, aber die Bedeutung sollte klar sein. Ich konnte es nicht glauben und fragte weiter bei Baidu. Baidu gab mir schließlich eine Antwort, also probierte ich es aus. 1. Verarbeiten Sie den SQL-Eintrag wie folgt SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Eintrittszeit!= '' ODER Eintrittsdatum IST NICHT NULL) und DATE_FORMAT(Eintrittsdatum, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname) a Die Rücktritts-SQL wird wie folgt verarbeitet: SELECT a.dept,a.lcNumber,0 als rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM Mitarbeitertabelle WHERE (Kündigungsdatum != '' ODER Austrittsdatum ist nicht NULL) und DATE_FORMAT(Eintrittsdatum, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname) a Sie können auch eine Ebene außerhalb hinzufügen oder nicht. Ich füge sie einfach dem ursprünglichen SQL hinzu, um die Zerstörung der Basisanweisung zu vermeiden. Natürlich reicht das nicht aus. 2. Verbinden Sie die beiden Aussagen vertikal und verbinden Sie sie mit der Summe SELECT dept, Summe(cm_1) als rcNumber, Summe(cm_0) als lcNumber FROM( SELECT c.id,c.dept,SUM(c.lcNumber) als cm_0,c.rcNumber als cm_1 FROM (SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Eintrittszeit!= '' ODER Eintrittsdatum IST NICHT NULL) und DATE_FORMAT(Eintrittsdatum, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname) a) c GROUP BY c.dept UNION ALLE Wählen Sie d.id, d.dept, d.lcNumber als cm_0, SUM(d.rcNumber) als cm_1 aus (SELECT a.dept,a.lcNumber,0 as rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Kündigungszeitpunkt != '' ODER quit_date IST NICHT NULL) und DATE_FORMAT(join_date, '%Y-%m') = '2019-09' GROUP BY Abteilungs-ID ORDER BY Abteilungsname) a) d GROUP BY d.dept) t GROUP BY t.dept ORDER BY t.id Endlich habe ich das gewünschte Ergebnis erhalten ZusammenfassenDies ist das Ende dieses Artikels über MySQL-Zusammenführungsergebnisse und horizontale Spleißfelder. Weitere relevante MySQL-Zusammenführungsergebnisse und horizontale Spleißfelder finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: HTML Table Tag Tutorial (47): Verschachtelte Tabellen
>>: So verwenden Sie eine VLAN-getaggte Ethernet-Karte im CentOS/RHEL-System
<br />Die Benutzererfahrung wird von chinesi...
Vorwort Die Ähnlichkeiten und Unterschiede zwisch...
Verwenden Sie HSSFWorkbook in Apache.POI, um nach...
Das CentOS-Projekt, ein 100 % kompatibler Neuaufb...
Linux wird im Allgemeinen als Server verwendet un...
Inhaltsverzeichnis 1. Lösung auslösen 2. Partitio...
Ich habe erst vor Kurzem angefangen, mich mit Dat...
MySQL Zeile zu Spalte, Spalte zu Zeile Der Satz i...
1. Laden Sie das Tomcat-Image herunter Docker zie...
Vor kurzem ist im Projekt ein Problem aufgetreten...
Vorwort Um in Webanwendungen Datenverkehr zu spar...
Inhaltsverzeichnis Vorwort 1. Rekursive Komponent...
In JavaScript können drei Arten von Meldungsfelde...
//MySQL-Anweisung SELECT * FROM `MyTable` WHERE `...
Interviewer: Haben Sie den Quellcode von Vue gele...