首页 小组 文章 相册 留言本 用户 搜索 我的社区 在线学堂 商城 购物车 支付钱包

[打卡]4-26

2024-04-26 12:15:33
0
19


#count 作用:计算指定字段在查询结果中出现的个数
SELECT COUNT(employee_id),COUNT(salary),COUNT(salary*12) from employees;
SELECT COUNT(1) FROM employees;
SELECT COUNT(4) FROM employees;
SELECT COUNT(*) FROM employees;
#jisua表中有多少条记录,如何实现?
#方式1:count(常数)
#方式2:count(*)
#方式3:count(具体字段)不一定对
#注意:计算指定具体字段出现的个数时,是不计算null值的
SELECT COUNT(commission_pct) FROM employees;
SELECT commission_pct FROM employees WHERE commission_pct is NOT NULL;
SELECT commission_pct FROM employees WHERE commission_pct is  NULL;
#不为空35
#空的72
#公式:AVG=SUM/COUNT
SELECT AVG(salary),SUM(salary)/COUNT(salary),
AVG(commission_pct),SUM(commission_pct)/COUNT(commission_pct),
SUM(commission_pct)/107                                 
FROM employees;
#直观的感觉
#需求:查询公司中平均奖金率
#不对的
SELECT AVG(commission_pct)FROM employees;
#换一个场景:查询每一个中国人的平均工资是多少,其中有两亿人没有工作,大家说,这两亿人要不要计算在内?
#以下正确
SELECT SUM(commission_pct)/COUNT(1)
FROM employees;
#GROUP BY的使用
#需求:查询各个部门的平均工资,最高工资
#显然不对,因为这是把107个员工看成了1个部门
SELECT AVG(salary),MAX(salary)
FROM employees;
#以下正确
SELECT department_id,AVG(salary),MAX(salary)
FROM employees
GROUP BY department_id;
#查询各个job_id的平均工资
#比如50号部门,各个工种的工资
SELECT job_id,AVG(salary)
FROM employees
GROUP BY job_id;
#需求:查询各个 department_id,job_id的平均工资
#先按department_id分组再按job_id分组
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id;
#先按job_id分组再按department_id分组
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY job_id, department_id;
# GROUP BY 后字段的顺序,代表着分组的顺序,但无论如何分组,结果是一样的
#错误的,眼见不一定为实,但是没有报错
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id;
#结论1:SELECT 中出现的非组函数字段必须声明在 GROUP BY 中,反之, GROUP BY 中声明的字段可以不出现在 SELECT中
#结论2. GROUP BY 声明在 FROM 后面,也在 WHERE 的后面,在 ORDER BY 的前面,也在 LIMIT 的前面
评论
意见反馈