일반적으로 어느 것을 사용합니까? 예제는 매우 권장됩니다!GROUP BY와 ORDER BY 사이의 차이점은 무엇입니까?
나는 MySQL을, 그래서 말하는거야,하지만 변경합니다 항목이 반환되는 순서 BY
일반적으로 어느 것을 사용합니까? 예제는 매우 권장됩니다!GROUP BY와 ORDER BY 사이의 차이점은 무엇입니까?
나는 MySQL을, 그래서 말하는거야,하지만 변경합니다 항목이 반환되는 순서 BY
ORDER 다른 DBMS에 다른되는 개념을 상상할 수 없다.
GROUP BY는 그룹화되지 않은 열 (예 : SUM, COUNT, AVG 등)에 대해 집계 함수를 수행 할 수 있도록 지정된 열로 레코드를 집계합니다.
GROUP BY는 일반적으로 행을 집계 할 때 선택 항목의 행을 그룹화하는 데 사용됩니다 (예 : 일부 필드에 대해 동일한 값을 가진 행 집합에 대한 합계, 평균 등을 계산).
ORDER BY는 select 문으로 인해 생성 된 행을 정렬하는 데 사용됩니다.
차이점은 이름이 의미하는 것과 정확히 같습니다. 그룹화 기준은 그룹화 작업을 수행하고 정렬은 정렬을 수행합니다.
SELECT * FROM Customers ORDER BY Name
을 수행하면 고객 이름순으로 결과 목록이 정렬됩니다.
SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
을 수행하면 활성 고객과 비활성 고객 수가 계산됩니다. 그룹은 지정한 필드를 기반으로 결과를 집계합니다.
또한 GROUP의 경우 결과가 반드시 정렬되지는 않습니다. 대부분의 경우 직관적 인 순서로 나올 수 있지만 GROUP 절에 의해 보장되지는 않습니다. 그룹을 정렬하려면 GROUP BY 다음에 항상 ORDER BY를 사용하십시오. –
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
테이블에 '연령대'열이 있고 Peters의 나이가 다른데 쿼리가 이름이 SELECT, 나이가 TABLE GROUP BY NAME입니까? – Varun
그룹에 속하지 않거나 메소드가없는 열은 반환 할 수 없습니다. 따라서 그룹을 기준으로 나이를 추가하거나 Max (Age)와 같은 작업을 수행해야합니다. – RiddlerDev
몇 가지 좋은 예가 있습니다. webcheatsheet에서 내 자신을 추가하는 것만으로도 좋은 예제를 얻을 수있을뿐만 아니라 자신 만의 SQL을 실행할 수도 있습니다. 간단한
,
ORDER BY
주문 데이터와
GROUP BY
그룹 또는 데이터를 결합합니다.
ORDER BY
은 기본적으로 위에서 설명한 필드에 따라 결과 집합을 오름차순으로 정렬합니다.
검색어를 ORDER BY (student_roll_number)
이라고 가정하면 학생의 롤 번호가 오름차순으로 표시됩니다.여기에서 student_roll_number
항목이 두 번 이상 나타날 수 있습니다.
GROUP BY
케이스에서는 집계 함수와 함께이 함수를 사용하고 집계 함수에 따라 데이터를 그룹화하고 결과를 얻습니다. 여기서 검색어가 SUM (marks)
과 함께 GROUP BY (student_first_name)
인 경우 각 그룹에 속한 학생의 점수 합계가 표시됩니다 (그룹의 모든 구성원은 동일한 이름을 가짐).
ORDER BY
은 오름차순 또는 내림차순으로 필드를 표시합니다. GROUP BY
은 동일한 필드 이름을 표시하지만, 하나의 출력에서만 ID 등이 표시됩니다. 그것은 GROUP BY
주목해야한다
이 대답은 수락 된 응답 또는 주어진 다른 대답에 대해 아직 언급하지 않은 추가 정보를 제공하지 않습니다. – newfurniturey
은 항상 당신이 목록 와 ORDER BY
을 사용할 수 있습니다로 (적어도 PostgreSQL을, 그리고 다른 SQL 변종의 가능성이) 필요하지 않으며 당신은 여전히 ASC
또는 DESC
열마다 사용할 수 있습니다 .. .
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;
ORDER BY : 정렬 오름차순 또는 내림차순으로 데이터입니다.
이 테이블 고객에 고려 :
이SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
이것은 다음과 같은 결과를 생성합니다 :
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
이 따르는 것은 이름에 의해 오름차순으로 결과를 정렬 할 예입니다 :
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
GROUP BY :은 그룹으로 동일한 데이터를 정렬합니다.
이제 고객에 테이블에 중복 된 이름에는 다음과 같은 기록이있다 : 당신이 하나의 이름으로 그룹과 동일한 이름을 원하는 경우
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
을, 다음 쿼리 BY GROUP가 될 것이다 다음과 같이
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
그러면 다음 결과가 생성됩니다. (동일한 이름의 경우 마지막 이름을 선택하고 오름차순으로 정렬)
당신이 합계, 평균 등과 같은 SQL 기능없이 아무 소용 것으로 추정대로210+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
..
그렇게 BY GROUP의 적절한 사용을 이해하기 위해이 정의를 통해 이동 :을 GROUP BY 절은 동일한 행을 단일/고유 그룹으로 요약하여 쿼리에 의해 반환 된 행에 대해 작업하고 SELECT 목록의 적절한 집계 함수를 사용하여 각 그룹에 대한 요약과 함께 단일 행 을 반환합니다 (예 : COUNT), SUM(), MIN(), MAX(), AVG(), 등각 고객 (이름)에 급여의 총액을 알고 싶다면
이제, 다음 쿼리 BY GROUP가 될 것이다 다음과 같이
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
이 다음과 같은 결과를 얻을 것이다 : (합 와 동일한 이름의 급여의 것은
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
이 문장은 함께 제공되는 예제가 없으면 사실상 의미가 없습니다. – JohnMerlino
링크의 두 번째 예가 차이점을 이해하기에 충분하다고 생각합니다. http://www.tutorialspoint.com/sql/sql-group-by.htm – nishantbhardwaj2002
예제를 제공해 주시겠습니까? – Rice