SQL에서 GROUP BY와 ORDER BY의 차이점은 무엇입니까?
당신은 일반적으로 어떤 것을 사용합니까?예시는 매우 권장됩니다!
MySql을 참조하고 있습니다만, 다른 DBMS에서는 개념이 다를 수 없습니다.
ORDER BY는 아이템이 반환되는 순서를 변경합니다.
GROUP BY는 그룹화되지 않은 열(SUM, COUNT, AVG 등)에 대해 집계 기능을 수행할 수 있도록 지정된 열별로 레코드를 집계합니다.
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
주문 기준: 데이터를 오름차순 또는 내림차순으로 정렬합니다.
CUSTOMES 표를 검토합니다.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
다음으로 NAME 순으로 결과를 정렬하는 예를 나타냅니다.
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
그 결과 다음과 같은 결과가 발생합니다.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
그룹화 기준: 동일한 데이터를 그룹으로 정렬합니다.
CUSTOMES 테이블에는 중복된 이름의 다음 레코드가 있습니다.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
동일한 이름을 단일 이름으로 그룹화할 경우 GROUP BY 쿼리는 다음과 같습니다.
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
그 결과 다음과 같은 결과가 발생합니다(같은 이름의 경우 마지막 이름을 선택하고 마지막으로 열을 오름차순으로 정렬합니다).
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
sum, avg 등의 SQL 함수가 없으면 아무 소용이 없다는 것을 당신이 추론한 것처럼.
GROUP BY의 올바른 사용법을 이해하려면 다음 정의를 참조하십시오.
GROUP BY 절은 동일한 행을 단일/구분 그룹으로 요약함으로써 쿼리에 의해 반환된 행에 대해 기능하며 COUNT(), SUM(), MIN(), MAX(), AVG() 등의 SELECT 목록에 적절한 집약 함수를 사용하여 각 그룹의 요약과 함께 단일 행을 반환합니다.
각 고객(이름)에 대한 급여 총액을 알고 싶다면 GROUP BY 조회는 다음과 같습니다.
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
이렇게 하면 다음과 같은 결과가 나타납니다. (동일한 이름의 급여를 합산하고 동일한 이름을 삭제한 후 NAME 열을 정렬합니다.)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
ORDER BY는 아이템이 반환되는 순서를 변경합니다.
GROUP BY는 그룹화되지 않은 열(SUM, COUNT, AVG 등)에 대해 집계 기능을 수행할 수 있도록 지정된 열별로 레코드를 집계합니다.
그 차이는 정확히 그 이름이 의미하는 바와 같습니다.그룹화 조작은 그룹화 조작을 실행하고 정렬은 소트별로 실시합니다.
하면.SELECT * FROM Customers ORDER BY Name
고객 이름별로 정렬된 결과 목록을 얻을 수 있습니다.
하면.SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
액티브 및 비액티브한 고객의 수가 표시됩니다.지정한 필드를 기준으로 결과를 집계한 그룹입니다.
그들은 전혀 다른 의미를 가지고 있고 전혀 관련이 없다.
ORDER BY를 사용하면 먼저 a-z에서 이름으로 정렬한 다음 가장 높은 가격에서 가장 낮은 가격 순으로 정렬하는 등 다양한 기준에 따라 결과 세트를 정렬할 수 있습니다.
(이름별 주문, 가격 설명)
GROUP BY를 사용하면 결과 세트를 가져와 논리 그룹으로 그룹화한 다음 해당 그룹에 대한 집계 쿼리를 실행할 수 있습니다.예를 들어, 모든 직원을 선택하고, 해당 직장의 위치별로 그룹화하고, 각 직장의 모든 직원에 대한 평균 급여를 계산할 수 있습니다.
심플, 심플.ORDER BY
를 주문하고 ""를 주문합니다.GROUP BY
이치노
ORDER BY
는 상기 필드에 따라 결과 세트를 오름차순으로 정렬합니다.
, ''라고 합니다.ORDER BY (student_roll_number)
학생 등록 번호의 오름차순으로 결과가 표시됩니다. 서서,,student_roll_number
을 사용하다
»GROUP BY
이를 집약 함수와 함께 사용하고 집약 함수에 따라 데이터를 그룹화하여 결과를 얻을 수 있습니다.쿼리에 ''가 '''가 있습니다.SUM (marks)
GROUP BY (student_first_name)
그것은 각 그룹에 속한 학생들의 점수 합계를 보여줄 것이다(여기서 그룹의 모든 구성원들은 같은 이름을 갖게 될 것이다.
GROUP BY는 일반적으로 행을 집계할 때 선택 항목에서 행을 그룹화하는 데 사용됩니다(예: 일부 필드의 값이 동일한 행 집합에 대한 합계, 평균 계산 등).
ORDER BY는 select 문에서 얻은 행을 정렬하는 데 사용됩니다.
ORDER BY
에 필드를 오름차순 또는 내림차순으로 나타냅니다.한편, 「 」는, 「 」, 「 」의 사이에GROUP BY
에, 같은 필드명, ID 등을 1개의 출력만으로 나타냅니다.
- GROUP BY는 그룹화되지 않은 열(SUM, COUNT, AVG 등)에 대해 집계 기능을 수행할 수 있도록 지정된 열별로 레코드를 집계합니다.ORDER BY는 아이템이 반환되는 순서를 변경합니다.
- SELECT IsActive, Count(*) FROM Customers GROUP BY IsActive를 사용하면 활성 및 비활성 고객 수를 얻을 수 있습니다.지정한 필드를 기준으로 결과를 집계한 그룹입니다.SELECT * FROM Customers ORDER BY Name을 선택하면 결과 목록이 고객 이름별로 정렬됩니다.
- GROUP을 사용하는 경우 결과가 반드시 정렬되는 것은 아닙니다.대부분의 경우 GROUP 절에 의해 직관적인 순서로 출력될 수 있지만 이는 보증되지 않습니다.그룹을 정렬하려면 항상 GROUP BY 뒤에 ORDER BY를 명시적으로 사용하십시오.
- 그룹화된 데이터는 WHERE 절로 필터링할 수 없습니다.주문 데이터는 WHERE 절로 필터링할 수 있습니다.
주의할 필요가 있다GROUP BY
(적어도 Postgre에서는) 항상 필요한 것은 아닙니다.SQL 및 기타 SQL 변종에서 사용 가능)ORDER BY
리스트와 함께 사용할 수 있습니다.ASC
또는DESC
열당...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;
언급URL : https://stackoverflow.com/questions/1277460/what-is-the-difference-between-group-by-and-order-by-in-sql
'it-source' 카테고리의 다른 글
Java 8: Java.util.function의 TriFunction(및 kin)은 어디에 있습니까?아니면 대체방법이 뭐죠? (0) | 2023.01.15 |
---|---|
n번째 문자마다 문자열을 분할하시겠습니까? (0) | 2023.01.15 |
C: 플로트 값을 인쇄합니다. (0) | 2023.01.15 |
C/C++로 DLL을 컴파일하여 다른 프로그램에서 호출합니다. (0) | 2023.01.13 |
Intelij IDEA가 크래쉬하여 오류가 발생하였습니다. (0) | 2023.01.13 |