sql >> Databáze >  >> RDS >> Database

GROUP BY vs. ORDER BY

Klauzule GROUP BY a klauzule ORDER BY v SQL se používají k uspořádání dat získaných SQL dotazy. Důležitý rozdíl mezi klauzulí GROUP BY a klauzulí ORDER BY je v tom, že klauzule GROUP BY se používá, když chceme použít agregační funkci v dotazu SQL na více než jedné sadě řádků. Naproti tomu klauzule ORDER BY se aplikuje, když chceme data získaná dotazem přijímat v seřazeném pořadí. Než přejdeme ke srovnávacím grafům, nejprve porozumíme těmto klauzulům SQL.

Klauzule GROUP BY

Příkaz GROUP BY v SQL používá dotazy k uspořádání dat v rámci hodnot atributů. Obvykle používáme klauzuli GROUP BY s příkazem SELECT. Klauzuli GROUP BY musíme vždy umístit za klauzuli WHERE. Kromě toho je také tempomat před klauzulí ORDER BY.

K vytvoření výstupu z databáze můžeme často použít klauzuli GROUP BY s agregačními funkcemi jako SUM, AVG, MIN, MAX a COUNT. Dotaz na klauzuli GROUP BY je seskupený dotaz a pro každý seskupený objekt vrací jeden řádek.

Níže je uvedena syntaxe pro použití klauzule GROUP BY v dotazu SQL

SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;

Pojďme pochopit klauzuli GROUP BY pomocí několika příkladů. Zvažte následující tabulky spolu s danými záznamy.

Tabulka:Zaměstnanci

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ ID SPRÁVCE PRACOVNÍ_HODINY GENDER
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50 000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 CHANDIgarH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50 000 MUMBAI TESTOVÁNÍ 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA KDE 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TESTOVÁNÍ 4 10 M

Příklad 1: Předpokládejme, že pro výše uvedená data chceme znát celkovou mzdu zaměstnanců v konkrétním městě. Za tímto účelem provedeme níže uvedený dotaz takto:

SELECT CITY, SUM(SALARY) FROM EMPLOYEES GROUP BY CITY;

Tento dotaz původně vytvořil výsledek, který seskupil město. Dále SUM funkce se provádí u každé skupiny měst a nakonec získáme požadované výsledky, jak je uvedeno níže:

Příklad 2: Předpokládejme, že pro výše uvedená data chceme znát maximální plat zaměstnanců v konkrétním oddělení. Za tímto účelem provedeme níže uvedený dotaz takto:

SELECT DEPARTMENT, MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

Tento dotaz původně vytvořil výsledek, který seskupil oddělení. Dále MAX Funkce se provádí na každé skupině oddělení a nakonec získáme požadované výsledky, jak je uvedeno níže:

OBJEDNAT PODLE klauzule

Klauzule GROUP BY a klauzule ORDER BY lze použít s příkazem SELECT. V SQL dotazech jsme použili klauzuli ORDER BY k řazení záznamů vrácených dotazem ve vzestupném nebo sestupném pořadí. Pokud bychom nezmínili pořadí řazení, celý výsledek by se ve výchozím nastavení seřadil vzestupně.

Níže je uvedena syntaxe pro použití klauzule ORDER BY v dotazu SQL

SELECT * FROM TABLENAME ORDER BY [ASC | DESC];

Pojďme pochopit klauzuli ORDER BY pomocí několika příkladů. Zvažte následující tabulky spolu s danými záznamy.

Tabulka:Zaměstnanci

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ ID SPRÁVCE PRACOVNÍ_HODINY GENDER
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50 000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 CHANDIgarH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50 000 MUMBAI TESTOVÁNÍ 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA KDE 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TESTOVÁNÍ 4 10 M

Příklad 1: Předpokládejme, že chceme uspořádat výsledek v seřazeném pořadí, buď vzestupně nebo sestupně, na základě sloupce křestního jména. V takovém případě bychom k výsledku chtěli použít klauzuli ORDER BY. Za tímto účelem provedeme níže uvedený dotaz takto:

SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;

Klíčový rozdíl mezi GROUP BY a ORDER BY

Níže jsou uvedeny body, které odlišují klauzule GROUP BY a ORDER BY:

  • Příkaz GROUP BY v SQL se používá k seskupení záznamů na základě podobné hodnoty v konkrétním sloupci. Na druhou stranu klauzule ORDER BY v SQL se používá k řazení výsledků zobrazení ve vzestupném nebo sestupném pořadí.
  • Při provádění dotazu pomocí klauzule GROUP BY v dotazu SQL je povinné použít agregační funkci. Na druhou stranu, při použití klauzule ORDER BY v SQ není povinné používat agregační funkci.
  • Klauzule GROUP BY je v dotazu SQL vždy umístěna za klauzuli WHERE, ale před klauzulí ORDER BY. Na druhou stranu klauzule ORDER BY je vždy umístěna za klauzulí GROUP BY.

Srovnávací tabulka

SR.NO GROUP BY OBJEDNAT PODLE
1 Klauzule GROUP BY se používá k seskupení řádků s podobnými hodnotami. Klauzule ORDER BY se používá k řazení výsledků v sestupném nebo vzestupném pořadí
2 Ovládá prezentaci řádků Ovládá prezentaci sloupců
3 Klauzule GROUP BY je vždy umístěna před klauzulí ORDER BY. Klauzule ORDER BY je vždy umístěna za klauzuli GROUP BY.
4 Je povinné používat agregační funkci Není povinné používat agregační funkci
5 Atribut nemůže být pod agregační funkcí v příkazu GROUP BY. Atribut může být pod agregační funkcí v příkazu ORDER BY.


  1. Export dat v SQL Server jako INSERT INTO

  2. Spusťte všechny soubory SQL v adresáři

  3. Základy tabulkových výrazů, část 12 – Inline tabulkové funkce

  4. Nainstalujte více instancí MySQL na server Linux – použijte samostatný konfigurační soubor MySQL