sql >> Databáze >  >> RDS >> Mysql

Jak řadit přes oddíl v MySQL

Někdy může být nutné provést hodnocení přes oddíl v MySQL nebo provést seskupené hodnocení v MySQL. Podíváme se na to, jak hodnotit oddíl pomocí funkce hodnocení MySQL. Tento přístup můžete použít k seřazení v rámci každé skupiny/oddílu v tabulce samostatně. Upozorňujeme však, že tato funkce je dostupná pouze z MySQL 8.0.


Hodnocení MySQL nad oddílem

K hodnocení v rámci skupiny použijeme funkci MySQL RANK(). Zde je syntaxe funkce MySQL RANK.

RANK() NAD ( ROZDĚLENÍ PODLE [{,...}] SEŘADIT PODLE  [ASC|DESC], [{,...}])

Funkce hodnocení přiřadí každému řádku v rámci oddílu hodnocení tak, že hodnocení každého řádku je o jednu vyšší než celkový počet řádků, které byly v daném oddílu ohodnoceny.

Ve výše uvedené syntaxi klauzule PARTITION BY rozdělí řádky na oddíly. Tabulku můžete rozdělit na základě jedné nebo více hodnot sloupců. Pokud nechcete tabulku rozdělit, můžete klauzuli PARTITION BY jednoduše úplně vynechat.


Bonusové čtení:Jak změnit časové pásmo MySQL v dotazu

Funkce Rank vypočítá hodnocení v rámci každého oddílu/skupiny a znovu inicializuje číslo pořadí, když začíná s novým oddílem.

Klauzule ORDER BY seřadí řádky v každém oddílu na základě hodnot v jednom nebo více sloupcích.


Bonusové čtení:Porovnání databází MySQL

Řekněme, že máte následující tabulku.

mysql> vytvořit tabulku for_rank(id int, měsíc varchar(10),částka int);mysql> vložit do for_rank(id, měsíc, částka) values(1,'Jan',450), (2,'Jan ',350), (3,'Leden',250), (4,'Feb',150), (5,'Feb',450), (6,'Feb',500), (7,'Mar ',350), (8,'Mar',450), (9,'Mar',250), (10,'Mar',150);mysql> vyberte * z for_rank;+------+ -------+--------+| id | měsíc | množství |+------+-------+--------+| 1 | Jan | 450 || 2 | Jan | 350 || 3 | Jan | 250 || 4 | únor | 150 || 5 | únor | 450 || 6 | únor | 500 || 7 | březen | 350 || 8 | březen | 450 || 9 | březen | 250 || 10 | březen | 150 |+------+-------+--------+


Bonusové čtení:MySQL zobrazuje indexy v databázích

Zde je dotaz na přiřazení hodnocení každému řádku tabulky bez použití jakékoli klauzule PARTITION BY.

Ve výše uvedeném dotazu rozdělíme tabulku podle názvu měsíce a poté seřadíme každý řádek v každém oddílu v sestupném pořadí podle množství.

Doufejme, že nyní můžete snadno použít funkci MySQL Rank k hodnocení oddílů a skupin.

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!

  1. Vytvořte PostgreSQL ROLE (uživatel), pokud neexistuje

  2. SQL Server podmíněný tok

  3. Jak povolit/zakázat přístup k datům na serveru SQL (příklad T-SQL)

  4. execSQL:je bindargs lepší?