수색…


통사론

  1. SELECT expression1, expression2, ... expression_n,
  2. aggregate_function (expression)
  3. FROM 테이블
  4. [조건]
  5. GROUP BY expression1, expression2, ... expression_n;

매개 변수

매개 변수 세부
expression1, expression2, ... expression_n 집계 함수 내에 캡슐화되지 않은 표현식이며 GROUP BY 절에 포함되어야합니다.
집계 함수 SUM, COUNT, MIN, MAX 또는 AVG 기능과 같은 기능.
테이블 당신이 레코드를 가져올 테이블. 하나 이상의 테이블이 FROM 절에 나열되어 있어야합니다.
어디 조건 선택 과목. 레코드를 선택하기 위해 충족해야하는 조건.

비고

MySQL GROUP BY 절은 SELECT 문에서 여러 레코드에 걸쳐 데이터를 수집하고 결과를 하나 이상의 열로 그룹화하는 데 사용됩니다.

그 행동은 부분적으로 ONLY_FULL_GROUP_BY 변수 의 값에 의해 제어됩니다. 이 옵션을 활성화하면 출력에없는 모든 열을 기준으로 그룹화하는 SELECT 문에서 오류가 반환됩니다. ( 이것은 기본값 인 5.7.5 입니다.)이 변수를 설정하고 설정하지 않으면 순진한 사용자 나 다른 DBMS에 익숙한 사용자에게 문제가 발생할 수 있습니다.

GROUP BY USING SUM 함수

SELECT product, SUM(quantity) AS "Total quantity"
FROM order_details
GROUP BY product;

MIN 기능을 사용하여 그룹화

각 행이 name , departmentsalary 가있는 직원 인 직원 테이블을 가정하십시오.

SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;

이것은 어떤 부서에 가장 낮은 급여를 가진 직원이 있는지, 그리고 그 급여가 무엇인지를 알려줍니다. 각 부서에서 가장 낮은 급여를 가진 직원의 name 을 찾는 것이이 예제의 범위를 벗어나는 다른 문제입니다. "groupwise max"를 참조하십시오.

GROUP BY USING COUNT 함수

SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department;

HAVING을 사용하여 GROUP BY

SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;

GROUP BY ... HAVING 사용 집계 레코드를 필터링하는 것은 SELECT ... WHERE 를 사용하여 개별 레코드를 필터링하는 것과 유사합니다.

HAVING 이 "별칭"을 이해하고 있으므로 HAVING HAVING Man_Power >= 10 이라고 말할 수도 있습니다.

그룹 연결을 사용하여 그룹화

그룹 연결 은 MySQL에서 열마다 하나 이상의 결과가있는 표현식의 연결 값을 가져 오는 데 사용됩니다. 의미, Name(1):Score(*) 과 같은 하나의 열에 대해 다시 선택할 수있는 행이 여러 개 있습니다 Name(1):Score(*)

이름 점수
아담 A +
아담 에이-
아담
아담 C +
계산서 디-
남자 에이-
SELECT Name, GROUP_CONCAT(Score ORDER BY Score desc SEPERATOR ' ') AS Grades
FROM   Grade
GROUP BY Name

결과 :

+------+------------+ 
| Name | Grades     | 
+------+------------+ 
| Adam | C+ B A- A+ | 
| Bill | D-         | 
| John | A-         | 
+------+------------+ 

전체 기능이있는 GROUP BY

테이블 주문

+---------+------------+----------+-------+--------+
| orderid | customerid | customer | total | items  |
+---------+------------+----------+-------+--------+
|       1 |          1 | Bob      |  1300 |     10 |
|       2 |          3 | Fred     |   500 |      2 |
|       3 |          5 | Tess     |  2500 |      8 |
|       4 |          1 | Bob      |   300 |      6 |
|       5 |          2 | Carly    |   800 |      3 |
|       6 |          2 | Carly    |  1000 |     12 |
|       7 |          3 | Fred     |   100 |      1 |
|       8 |          5 | Tess     | 11500 |     50 |
|       9 |          4 | Jenny    |   200 |      2 |
|      10 |          1 | Bob      |   500 |     15 |
+---------+------------+----------+-------+--------+
  • 카운트

WHERE 절에서 특정 조건을 만족하는 행 수를 반환합니다.

예 : 각 고객의 주문 수.

SELECT customer, COUNT(*) as orders
FROM orders
GROUP BY customer
ORDER BY customer

결과:

+----------+--------+
| customer | orders |
+----------+--------+
| Bob      |      3 |
| Carly    |      2 |
| Fred     |      2 |
| Jenny    |      1 |
| Tess     |      2 |
+----------+--------+
  • 합집합

선택된 열의 합계 를 돌려줍니다.

예 : 총계와 각 고객의 항목 합계.

SELECT customer, SUM(total) as sum_total, SUM(items) as sum_items
FROM orders
GROUP BY customer
ORDER BY customer

결과:

+----------+-----------+-----------+
| customer | sum_total | sum_items |
+----------+-----------+-----------+
| Bob      |      2100 |        31 |
| Carly    |      1800 |        15 |
| Fred     |       600 |         3 |
| Jenny    |       200 |         2 |
| Tess     |     14000 |        58 |
+----------+-----------+-----------+
  • AVG

수치의 열의 평균치를 돌려줍니다.

예 : 각 고객의 평균 주문 값.

SELECT customer, AVG(total) as avg_total
FROM orders
GROUP BY customer
ORDER BY customer

결과:

+----------+-----------+
| customer | avg_total |
+----------+-----------+
| Bob      |       700 |
| Carly    |       900 |
| Fred     |       300 |
| Jenny    |       200 |
| Tess     |      7000 |
+----------+-----------+
  • MAX

특정 열 또는 표현식의 가장 높은 값을 반환합니다.

예 : 각 고객에 대한 가장 높은 주문 합계.

SELECT customer, MAX(total) as max_total
FROM orders
GROUP BY customer
ORDER BY customer

결과:

+----------+-----------+
| customer | max_total |
+----------+-----------+
| Bob      |      1300 |
| Carly    |      1000 |
| Fred     |       500 |
| Jenny    |       200 |
| Tess     |     11500 |
+----------+-----------+
  • MIN

특정 열 또는 표현식의 가장 낮은 값을 반환합니다.

예 : 각 고객에 대한 최저 주문 총계.

SELECT customer, MIN(total) as min_total
FROM orders
GROUP BY customer
ORDER BY customer

결과:

+----------+-----------+
| customer | min_total |
+----------+-----------+
| Bob      |       300 |
| Carly    |       800 |
| Fred     |       100 |
| Jenny    |       200 |
| Tess     |      2500 |
+----------+-----------+


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow