Heim  >  Artikel  >  Datenbank  >  So berechnen Sie den Median eines Datensatzes in MySQL

So berechnen Sie den Median eines Datensatzes in MySQL

藏色散人
藏色散人nach vorne
2019-09-12 11:08:006146Durchsuche

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);

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;
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;
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)

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

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

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)
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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen