Heim > Datenbank > MySQL-Tutorial > Hauptteil

So berechnen Sie den Median eines Datensatzes in MySQL

藏色散人
Freigeben: 2019-09-12 11:08:53
nach vorne
6148 Leute haben es durchsucht

Um den Median eines Datensatzes zu erhalten (z. B. das Medianeinkommen einer bestimmten Region oder eines bestimmten Unternehmens), müssen wir diese Aufgabe im Allgemeinen in drei kleine Aufgaben unterteilen:

1 Daten und geben Sie jeder Datenzeile ihren Rang unter allen Daten an.

3 Am Beispiel des monatlichen Einkommens der Mitarbeiter eines Unternehmens wird die Verwendung einiger komplexer MySQL-Anweisungen veranschaulicht.

Methode 1

Erstellen Sie eine Testtabelle

Erstellen Sie zunächst eine Einkommenstabelle:

CREATE TABLE IF NOT EXISTS `employee` (
  `id`     INT                  AUTO_INCREMENT PRIMARY KEY,
  `name`   VARCHAR(10) NOT NULL DEFAULT '',
  `income` INT         NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;
INSERT INTO `employee` (`name`, `income`)
VALUES ('麻子', 20000);
INSERT INTO `employee` (`name`, `income`)
VALUES ('李四', 12000);
INSERT INTO `employee` (`name`, `income`)
VALUES ('张三', 10000);
INSERT INTO `employee` (`name`, `income`)
VALUES ('王二', 16000);
INSERT INTO `employee` (`name`, `income`)
VALUES ('土豪', 40000);
Nach dem Login kopieren

Schließen Sie Aufgabe 1 ab

Sortieren Sie die Daten und geben Sie jeder Datenzeile ihren Rang unter allen Daten:

SELECT t1.name, t1.income, COUNT(*) AS rank
FROM employee AS t1,
     employee AS t2
WHERE t1.income < t2.income
   OR (t1.income = t2.income AND t1.name <= t2.name)
GROUP BY t1.name, t1.income
ORDER BY rank;
Nach dem Login kopieren
Das Abfrageergebnis ist:

Führen Sie die kleine Aufgabe 2 ausSo berechnen Sie den Median eines Datensatzes in MySQL

Finden Sie die mittlere Rangzahl:

SELECT (COUNT(*) + 1) DIV 2 as rank
FROM employee;
Nach dem Login kopieren
Das Abfrageergebnis ist:

Schließe kleine Aufgabe 3 abSo berechnen Sie den Median eines Datensatzes in MySQL

SELECT income AS median
FROM (SELECT t1.name, t1.income, COUNT(*) AS rank
      FROM employee AS t1,
           employee AS t2
      WHERE t1.income < t2.income
         OR (t1.income = t2.income AND t1.name <= t2.name)
      GROUP BY t1.name, t1.income
      ORDER BY rank) t3
WHERE rank = (SELECT (COUNT(*) + 1) DIV 2 FROM employee)
Nach dem Login kopieren

Das Abfrageergebnis ist:

Bisher , wir haben herausgefunden, wie man den Median aus einem Datensatz erhält.

So berechnen Sie den Median eines Datensatzes in MySQL

Methode 2

Als nächstes stellen wir eine weitere Methode zur Optimierung von Ranking-Aussagen vor. Wir alle wissen, wie man einen Datensatz sortiert. In diesem Beispiel ist die Implementierungsmethode wie folgt:

SELECT name, income
FROM employee
ORDER BY income DESC
Nach dem Login kopieren

Das Abfrageergebnis ist:

Können wir noch einen Schritt weiter gehen und den Abfrageergebnissen eine Spalte hinzufügen? Die Daten in dieser Spalte sind das Ranking?

So berechnen Sie den Median eines Datensatzes in MySQLWir können dieses Ziel durch 3 benutzerdefinierte Variablen erreichen:

Die erste Variable wird verwendet, um das Einkommen der aktuellen Datenzeile aufzuzeichnen.

Die zweite Variable wird verwendet, um das zu erfassen Einkommen der vorherigen Datenzeile

Die dritte Variable wird verwendet, um das Ranking der aktuellen Datenzeile aufzuzeichnen

SET @curr_income := 0;
SET @prev_income := 0;
SET @rank := 0;
SELECT `name`,
       @curr_income := income                                      AS income,
       @rank := if(@prev_income != @curr_income, @rank + 1, @rank) AS rank,
       @prev_income := @curr_income                                AS dummy
FROM employee
ORDER BY income DESC
Nach dem Login kopieren

Die Abfrageergebnisse lauten wie folgt:

Ermitteln Sie dann die Rangzahl des Medians und ermitteln Sie weiter das Medianeinkommen:

SET @curr_income := 0;
SET @prev_income := 0;
SET @rank := 0;
SELECT income AS median
FROM (SELECT `name`,
             @curr_income := income                                      AS income,
             @rank := if(@prev_income != @curr_income, @rank + 1, @rank) AS rank,
             @prev_income := @curr_income                                AS dummy
      FROM employee
      ORDER BY income DESC) AS t1
WHERE t1.rank = (SELECT (COUNT(*) + 1) DIV 2 FROM employee)
Nach dem Login kopieren
So berechnen Sie den Median eines Datensatzes in MySQLDas Abfrageergebnis lautet:

Zu diesem Zeitpunkt haben wir zwei Möglichkeiten gefunden, das Medianproblem zu lösen. Blumen bestreuen.

So berechnen Sie den Median eines Datensatzes in MySQLEmpfohlen: „

MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonSo berechnen Sie den Median eines Datensatzes in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage