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
Bereiten Sie die Taschen vor Installieren Überprü...
1. Laden Sie die erfolgreich generierte Symboldate...
Inhaltsverzeichnis 1. Was ist JavaScript? 2. Wofü...
Wie löst man das Problem 1045, wenn die lokale Da...
Inhaltsverzeichnis 1. Mehrere Syntaxen von Insert...
Frage Im vorherigen Artikel zur domänenübergreife...
Code kopieren Der Code lautet wie folgt: <Obje...
Inhaltsverzeichnis Installieren Sie den Vim-Plugi...
MySQL ermöglicht das Erstellen mehrerer Indizes f...
1. Bereiten Sie die Umgebung vor (laden Sie nodej...
Das mit JavaScript-Objekten und -Methoden impleme...
Samba Übersicht Samba ist eine kostenlose Softwar...
Vorwort Zuvor habe ich über das Problem der verti...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Die Verwendung von CSS zum Generieren gep...