logo

GROUP BY vs. ORDER BY

Tento článek vysvětluje úplný přehled klauzule GROUP BY a ORDER BY. Používají se především pro organizaci dat získaných SQL dotazy. Rozdíl mezi těmito větami je jedním z nejčastějších míst, kde se při učení zaseknete SQL . Hlavní rozdíl mezi nimi je v tom klauzule GROUP BY je použitelná, když chceme použít agregační funkce pro více než jednu sadu řádků. Klauzule ORDER BY je použitelná, když chceme získat data získaná dotazem v pořadí řazení . Než provedeme srovnání, nejprve budeme znát tyto klauzule SQL.

GROUP BY vs. ORDER BY

OBJEDNAT PODLE klauzule

Klauzule ORDER BY se používá v dotazech SQL k řazení dat vrácených dotazem ve vzestupném nebo sestupném pořadí. Pokud vynecháme řazení, seřadí se souhrnný výsledek standardně vzestupně. Klauzuli ORDER BY, stejně jako klauzuli GROUP BY, lze použít ve spojení s příkazem SELECT. ASC označuje vzestupné pořadí, zatímco DESC označuje sestupné pořadí.

Níže je uvedena syntaxe pro použití klauzule ORDER BY v příkazu SQL:

ve srovnání s metodou java
 SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ]; 

Pojďme pochopit, jak funguje klauzule ORDER BY pomocí následujícího příkladu. Předpokládejme, že máme stůl vývojář který obsahuje následující údaje:

GROUP BY vs. ORDER BY

Vidíme, že tyto výsledky nejsou zobrazeny organizovaným způsobem. Předpokládejme, že chceme uspořádat výsledky ve vzestupném nebo sestupném pořadí na základě státní sloupec . V takovém případě bychom potřebovali příkaz ORDER BY, abychom získali požadovaný výsledek. Můžeme to provést provedením příkazu takto:

 mysql> SELECT D_name, D_state, D_salary FROM developers ORDER BY D_state ASC; 

Zde je výstup, kde získáme požadované výsledky:

GROUP BY vs. ORDER BY

GROUP BY klauzule

Klauzule GROUP BY se používá v dotazech SQL k uspořádání dat, která mají stejné hodnoty atributů. Obvykle jej používáme s příkazem SELECT . Vždy je třeba mít na paměti, že klauzuli GROUP BY musíme umístit za klauzuli WHERE. Navíc je temporován před klauzulí ORDER BY.

Tuto klauzuli můžeme často použít ve spolupráci s agregačními funkcemi jako SUM, AVG, MIN, MAX a COUNT k vytvoření souhrnných sestav z databáze. Je důležité si uvědomit, že atribut v této klauzuli se musí objevit v klauzuli SELECT, nikoli pod agregační funkcí. Pokud tak učiníme, dotaz by byl nesprávný. V důsledku toho se klauzule GROUP BY vždy používá ve spojení s klauzulí SELECT. Dotaz na klauzuli GROUP BY je seskupený dotaz a pro každý seskupený objekt vrací jeden řádek.

if else příkazy java

Následuje syntaxe pro použití klauzule GROUP BY v příkazu SQL:

 SELECT column_name, function(column_name) FROM table_name WHERE condition GROUP BY column_name; 

Pojďme pochopit, jak funguje klauzule GROUP BY pomocí příkladu. Zde si to předvedeme se stejnou tabulkou.

Předpokládejme, že to chceme vědět průměrný plat vývojáře v konkrétním státě a uspořádat výsledky v sestupném pořadí na základě sloupce stavu. V takovém případě bychom k dosažení požadovaného výsledku potřebovali jak příkaz GROUP BY, tak příkaz ORDER BY. Můžeme to provést provedením příkazu takto:

 mysql> SELECT D_state, avg(D_salary) AS salary FROM developers GROUP BY D_state ORDER BY D_state DESC; 

Tento dotaz původně tvořil mezivýsledek, který seskupil stav. Dále, AVG funkce se provádí pro každou skupinu stavů, pak seřaďte výsledek v sestupném pořadí a nakonec získáme požadované výsledky, jak je uvedeno níže:

GROUP BY vs. ORDER BY

Klíčové rozdíly mezi GROUP BY a ORDER BY

Níže jsou uvedeny hlavní rozdíly mezi doložkou Seskupit podle a Seřadit podle:

  • Klauzule Group By se používá k seskupení dat na základě stejné hodnoty v určitém sloupci. Klauzule ORDER BY na druhé straně seřadí výsledek a zobrazí jej ve vzestupném nebo sestupném pořadí.
  • Pro použití Seskupit podle je povinné použít agregační funkci. Na druhou stranu není povinné používat agregační funkci pro použití Order By.
  • Atribut nemůže být pod příkazem GROUP BY pod agregační funkcí, zatímco atribut může být pod příkazem ORDER BY pod agregační funkcí.
  • Klauzule Group By řídí prezentaci n-tic, což znamená, že seskupování se provádí na základě podobnosti mezi hodnotami atributů řádku. Naproti tomu klauzule ORDER BY řídí prezentaci sloupců, což znamená, že řazení nebo řazení se provádí na základě hodnot atributů sloupce buď ve vzestupném nebo sestupném pořadí.
  • GROUP BY je vždy umístěn za klauzuli WHERE, ale před příkazem ORDER BY. Na druhou stranu ORDER BY se vždy používá za příkazem GROUP BY.

GROUP BY vs. ORDER BY Srovnávací tabulka

Následující srovnávací tabulka rychle vysvětluje jejich hlavní rozdíly:

SN SKUPINA VYTVOŘENÁ SEŘADIT PODLE
1. Používá se k seskupení řádků, které mají stejné hodnoty. Seřadí sadu výsledků buď ve vzestupném nebo sestupném pořadí.
2. Může být povoleno v příkazu CREATE VIEW. V příkazu CREATE VIEW to není povoleno
3. Řídí prezentaci řádků. Řídí prezentaci sloupců.
4. Atribut nemůže být pod agregační funkcí v příkazu GROUP BY. Atribut může být pod agregační funkcí pod příkazem ORDER BY.
5. Vždy se používá před klauzulí ORDER BY v příkazu SELECT. Vždy se používá po klauzuli GROUP BY v příkazu SELECT.
6. V GROUP BY je povinné používat agregační funkce. Použití agregačních funkcí v ORDER BY není povinné.
7. Zde se seskupení provádí na základě podobnosti mezi hodnotami atributů řádku. Zde je sada výsledků setříděna na základě hodnot atributů sloupce, buď vzestupně nebo sestupně.

Závěr

V tomto článku jsou porovnány klauzule GROUP BY a ORDER BY. Obě klauzule jsou mimořádně užitečné funkce databáze SQL. Když chceme vytvořit skupinu řádků, použijeme klauzuli GROUP BY. Pokud chceme uspořádat data vzestupně nebo sestupně na základě určitého sloupce, použijeme klauzuli ORDER BY. Nemají žádný vztah, protože oba se používají ke dvěma různým účelům. Můžeme je však kombinovat, aby sloužily nějakému speciálnímu účelu, nebo je můžeme použít jednotlivě v závislosti na okolnostech. Tyto klauzule můžeme použít pouze s příkazem SELECT.

naučit se selen