Beispielcode für die Konvertierung von MySQL-Zeilen und -Spalten

Beispielcode für die Konvertierung von MySQL-Zeilen und -Spalten

1. Nachfrage

Wir haben drei Tabellen. Wir müssen die verschiedenen Ergebnisse zur Antibiotikaempfindlichkeit über einen bestimmten Zeitraum klassifizieren und zählen, d. h. das drug_result der Tabelle report_item_drugs, den Anteil unter verschiedenen Projekten project_name und verschiedenen Antibiotika antibiotic_dict_name, und die Ergebnisse zur Arzneimittelempfindlichkeit in den Zeilen anzeigen . Der Effekt ist wie folgt:

Die drei ursprünglichen Tabellen (nur die erforderlichen Felder werden als Beispiele verwendet) sind:

Berichtsformular

Projektliste

Antibiotika-Tabelle (Ergebnisse zur Arzneimittelempfindlichkeit, „medicines_result“ ist eine Wertespalte)

2. Umsetzung

1. Berechnen Sie die Gesamtzahl der erkannten Fälle nach Projekt und Antibiotikagruppe

WÄHLEN 
 A.project_name,A.antibiotic_dict_name,SUM(nums) AS Gesamtzahl der Erkennungen FROM 
(
      SELECT i.Projektname,d.Antibiotikum_Dict_Name,d.Medikamente_Ergebnis,COUNT(d.id) AS nums FROM `Bericht` r
       RIGHT JOIN report_item i ON r.id=i.report_id
       RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
       WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
       GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis
 ) A
 GROUP BY A.Projektname,A.Antibiotikum_dict_name

2. Berechnen Sie die Anzahl der unterschiedlichen Arzneimittelempfindlichkeitsergebnisse je nach Projekt, Antibiotikum und Arzneimittelempfindlichkeitsergebnissen

SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, 'Nicht ausgefüllt') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r
RIGHT JOIN report_item i ON r.id=i.report_id
RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis  

3. Verknüpfen Sie die beiden Ergebnisse miteinander

WÄHLEN 
      BB.project_name,BB.antibiotic_dict_name,BB.drugs_result,BB.`Menge`,AA.`Gesamtzahl der Nachweise`
    AUS 
        (
              WÄHLEN 
                A.project_name,A.antibiotic_dict_name,SUM(nums) AS Gesamtzahl der Erkennungen FROM 
              (
                    SELECT i.Projektname,d.Antibiotikum_Dict_Name,d.Medikamente_Ergebnis,COUNT(d.id) AS nums FROM `Bericht` r
                    RIGHT JOIN report_item i ON r.id=i.report_id
                    RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
                    WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
                    GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis
              ) A
              GROUP BY A.Projektname,A.Antibiotikum_dict_name
        ) AA 
        RECHTS BEITRETEN 
        (
              SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, 'Nicht ausgefüllt') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r
              RIGHT JOIN report_item i ON r.id=i.report_id
              RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
              WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
              GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis            
        )BB ON AA.project_name=BB.project_name UND AA.antibiotic_dict_name=BB.antibiotic_dict_name
    WO AA.`Gesamtzahl der Erkennungen`<>'

4. Im Allgemeinen stehen die Anzahl der unterschiedlichen Arzneimittelempfindlichkeiten und die Gesamtzahl im vorherigen Schritt zur Verfügung, sodass das Verhältnis direkt berechnet werden kann.

Was wir jedoch brauchen, ist die Anzeige der Arzneimittelempfindlichkeit in der Zeile, und die direkte Berechnung des Verhältnisses erfüllt nicht die Anforderungen, daher müssen wir die Spalte in eine Zeile umwandeln

Wir verwenden case, wenn wir Zeilen und Spalten konvertieren und die Ergebnisse der Arzneimittelempfindlichkeit gemäß dem Wörterbuch in leicht lesbare chinesische Schriftzeichen umwandeln


WÄHLEN
  C.project_name Projektname, C.antibiotic_dict_name Name des Antibiotikums, C.`Gesamtzahl der Nachweise`,
  SUM(CASE C.`drugs_result` WHEN 'D' THEN C.`Quantity` ELSE 0 END ) AS 'Dosisabhängige Sensitivität',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'D' THEN FORMAT(C.`Quantity`/C.`Total number of detections`*100,2) ELSE 0 END),'%') AS 'Dosisabhängiges Sensitivitätsverhältnis',
  SUMME (FALL C. `Medikamentenergebnis` WENN 'R' DANN C. `Menge` SONST 0 ENDE ) ALS 'Medikamentenresistenz',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'R' THEN FORMAT(C.`Quantity`/C.`Gesamtzahl der Nachweise`*100,2) ELSE 0 END),'%') AS 'Medikamentenresistenzverhältnis',
  SUMME (FALL C. `medikamentenergebnis` WENN 'S' DANN C. `Menge` SONST 0 ENDE ) ALS 'Sensibel',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'S' THEN FORMAT(C.`Quantity`/C.`Gesamtzahl der Nachweise`*100,2) ELSE 0 END),'%') AS 'Sensitives Verhältnis',
  SUMME (FALL C. `medikamentenergebnis` WENN 'I' DANN C. `Menge` SONST 0 ENDE ) ALS 'Agentur',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'I' THEN FORMAT(C.`Quantität`/C.`Gesamtnachweis`*100,2) ELSE 0 END),'%') AS 'Zwischenverhältnis',
  SUMME (FALL C. `drugs_result` WENN 'n1' DANN C. `quantity` SONST 0 ENDE ) ALS 'nicht sensitiv',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'n1' THEN FORMAT(C.`Quantity`/C.`Gesamtzahl der Nachweise`*100,2) ELSE 0 END),'%') AS 'Nicht-sensitives Verhältnis',
  SUMME (FALL C. `Medikamentenergebnis` WENN 'N' DANN C. `Menge` SONST 0 ENDE ) ALS 'Keine',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'N' THEN FORMAT(C.`Quantity`/C.`Total Detection`*100,2) ELSE 0 END),'%') AS 'Kein Verhältnis',
  SUM(CASE C.`drugs_result` WHEN 'Nicht ausgefüllt' THEN C.`Quantity` ELSE 0 END ) AS 'Nicht ausgefüllt',
  CONCAT(SUM(CASE C.`drugs_result` WHEN 'Nicht ausgefüllt' THEN FORMAT(C.`Quantity`/C.`Gesamtzahl der Nachweise`*100,2) ELSE 0 END),'%') AS 'Nicht ausgefülltes Verhältnis'
AUS
(
    WÄHLEN 
      BB.project_name,BB.antibiotic_dict_name,BB.drugs_result,BB.`Menge`,AA.`Gesamtzahl der Nachweise`
    AUS 
        (
              WÄHLEN 
                A.project_name,A.antibiotic_dict_name,SUM(nums) AS Gesamtzahl der Erkennungen FROM 
              (
                    SELECT i.Projektname,d.Antibiotikum_Dict_Name,d.Medikamente_Ergebnis,COUNT(d.id) AS nums FROM `Bericht` r
                    RIGHT JOIN report_item i ON r.id=i.report_id
                    RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
                    WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
                    GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis
              ) A
              GROUP BY A.Projektname,A.Antibiotikum_dict_name
        ) AA 
        RECHTS BEITRETEN 
        (
              SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, 'Nicht ausgefüllt') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r
              RIGHT JOIN report_item i ON r.id=i.report_id
              RECHTS JOIN report_item_drugs d EIN d.report_item_id=i.id
              WO r.report_status=2 UND r.add_date ZWISCHEN '2020-01-01' UND '2020-12-30' 
              GRUPPE NACH i.Projekt-ID, d.Antibiotikum-Dict-ID, d.Medikamentenergebnis            
        )BB ON AA.project_name=BB.project_name UND AA.antibiotic_dict_name=BB.antibiotic_dict_name
    WHERE AA.`Gesamtzahl der Erkennungen`<>'                                        
) C
GRUPPE NACH C.Projektname,C.Antibiotikum_dict_name;

5. Überprüfen Sie die Ergebnisse und konvertieren Sie erfolgreich


Dies ist das Ende dieses Artikels über den Beispielcode der MySQL-Zeilen-Spalten-Konvertierung. Weitere relevante Inhalte zur MySQL-Zeilen-Spalten-Konvertierung finden Sie in den vorherigen Artikeln von 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:
  • Datenbankimplementierung der Zeilen- und Spaltenkonvertierung (MySQL-Beispiel)
  • Implementierung der dynamischen Konvertierung von MySQL-Zeilen und -Spalten (Kontingenztabelle, Kreuztabelle)

<<:  IE8 verwendet den Multikompatibilitätsmodus, um Webseiten normal anzuzeigen

>>:  Detaillierte Erläuterung der Ereignisschleifen-Ereigniswarteschlange von js im Browser

Artikel empfehlen

Lösungen für Dateien/Ordner, die unter Linux nicht gelöscht werden können

Vorwort Kürzlich wurde unser Server von Hackern a...

Detaillierte Erklärung, wann Javascript-Skripte ausgeführt werden

JavaScript-Skripte können überall in HTML eingebe...

Lösung für die Baidu-Site-Suche, die https nicht unterstützt (getestet)

Seit kurzem ist https auch auf dem Handy möglich....

Lösung für das Routing-Hervorhebungsproblem von Vue-Komponenten

Vorwort Früher habe ich den Cache verwendet, um d...

HTML-Tag Marquee realisiert verschiedene Scroll-Effekte (ohne JS-Steuerung)

Der automatische Bildlaufeffekt der Seite kann du...

Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Nachdem ich die Installation von Python8 minimier...

Einführung in die JWT-Verifizierung mit Nginx und Lua

Inhaltsverzeichnis Vorwort Lua-Skript nignx.conf-...

my.cnf-Parameterkonfiguration zur Optimierung der InnoDB-Engine-Leistung

Ich habe im Internet unzählige my.cnf-Konfigurati...

So scrollen Sie manuell durch Protokolle im Linux-System

Die Protokollrotation ist eine sehr gängige Funkt...

mysql installer web community 5.7.21.0.msi grafik-tutorial zur installation

In diesem Artikelbeispiel wird der spezifische Co...

Ausführliche Erläuterung der Konzepte und Verwendung von MySQL-Transaktionen

Inhaltsverzeichnis Der Begriff der Affären Der St...