MySQL의-DQL (쿼리를 그룹화)

고급 5 : 그룹화 쿼리

구문 :
쿼리 SELECT리스트
테이블에서
[] 필터 기준
그룹화하여 필드 그룹
[필드 정렬하여 순서]
참고 다음
검색어 목록 그룹 기능 기 의해 후 특별한 요구 필드를 갖고

특징 :
두 가지 범주로 질의 1, 패킷 필터 기준

데이터 소스 위치 키워드
패킷 전에 필터링 원래 테이블 전면 그룹화 어디
스크리닝 기 후 결과 집합을 그룹화 한 후 다시별로 그룹화 필요

기능을 그룹화하면 HAVING에 위치 확인 조건을 만들기 위해
최종 분류에 걸릴 수 있고, 여러 필드, 함수, 표현식을 그룹화 절 지원에 의해 그룹 단일 필드 그룹을

그룹화 기능 :
COUNT
SUM
최대
최소
AVG

#查询每个部门的员工个数
SELECT COUNT(*) FROM employees WHERE department_id=90;
#案例1:查询每个工种的员工平均工资
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;

추가 필터 기준 그룹화

#案例1 查询那个部门的员工数>2
#1.查询每个部门的员工个数
#2.根据1的结果进行筛选,查询那个部门的员工个数>2
/*
不能用where因为where是从你原始表里面筛选 并且更在from后面 而现在要求是在结果的新建表里面进行筛选 用having
*/
select count(*),department_id from employees 
group by department_id 
having count(*)>2;
#案例2: 查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
 select
  max(salary),
  job_id
from
  employees
where commission_pct is not  null
group by job_id
having max(salary)>12000;
#按多个字段分组
#案例:查询每个部门每个工种的平均工资
select avg(salary),department_id,job_id from employees 
group by department_id,job_id; 
#添加排序
#案例:查询每个部门每个工种的平均工资,并且按平均工资的高低显示
 SELECT
  AVG(salary),
  department_id,
  job_id
FROM
  employees
WHERE department_id IS NOT NULL
GROUP BY department_id,
  job_id
HAVING AVG(salary)>10000
order by avg(salary) desc;
게시 45 개 원래 기사 · 원의 찬양 (43) · 전망 7085

추천

출처blog.csdn.net/qq_42193790/article/details/104354099