经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄

在这里插入图片描述
切记where后面不能跟直接跟聚合函数
1,SELECT ,COUNT() FROM dept d LEFT JOIN emp e ON d.deptno=e.deptno WHERE e.sal<4000 GROUP BY d.deptno
查询部门工资低于4000的人数
2,
表数据
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
insert into tb values(‘张三’,‘语文’,74)
insert into tb values(‘张三’,‘数学’,83)
insert into tb values(‘张三’,‘物理’,93)
insert into tb values(‘李四’,‘语文’,74)
insert into tb values(‘李四’,‘数学’,84)
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第1张图片
利用 if语句进行行转列
SELECT 姓名,SUM(IF(课程=“语文”,分数,0)) AS 语文,
SUM(IF(课程=“数学”,分数,0)) AS 数学,
SUM(IF(课程=“物理”,分数,0)) AS 物理 FROM tb GROUP BY 姓名

– 使用case when (SQL2000以上)
select 姓名,
max(case 课程 when ‘语文’ then 分数 else 0 end)语文,
max(case 课程 when '数学’then 分数 else 0 end)数学,
max(case 课程 when '物理’then 分数 else 0 end)物理
from tb
group by 姓名

员工表,查询入职满5年的员工
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第2张图片
部门表
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第3张图片
SELECT * FROM COM WHERE entry<=DATE_SUB(SYSDATE(),INTERVAL 5 YEAR);

统计各部门的的男女员工数

SELECT d.dname,
SUM(CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END) 女,
SUM(CASE WHEN sex = ‘男’ THEN 1 ELSE 0 END) 男 FROM com c LEFT JOIN dept d ON d.id = c.deptId GROUP BY deptId

还有一个方法
SELECT d.id,d.dname,c.sex,COUNT(*) FROM com c ,dept d WHERE d.id=c.deptId GROUP BY c.deptId , c.sex
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第4张图片
另外大家可以注意一下
CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END
CASE 课程 when ‘语文’ then 分数 else 0 end
这两中不同写法

计算每门成绩不低于60分的学生姓名
表数据
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第5张图片

方法1:SELECT DISTINCT(NAME) FROM sc WHERE id NOT IN (SELECT DISTINCT(id) FROM sc WHERE score <60)
方法2
SELECT NAME FROM sc GROUP BY NAME HAVING MIN(score)>60
查询结果
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第6张图片

根据出生日期计算年龄
SELECT *,TIMESTAMPDIFF(YEAR,entry,CURDATE())AS 年龄 FROM com
经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄_第7张图片
这是我找了好多根据出生日期计算年龄的sql,这个无疑是最优秀的一个,但是美中不足的是 当我把出生日期写成2018-11-25 11:26:51的时候计算的年龄为0,因为当前时间是2019-11-25 22:21:51这样按实际情况应该刚好一岁的,不过,把出生日期改为2018-11-24 11:26:51就是1了 也就是说有一天和实际情况不符合。如果您有更优的方案,希望不吝赐教,谢谢。

结束语:写的可能有点乱,请见谅。各位有不明白的地方可以给我留言。我一定会即使回复的。

你可能感兴趣的:(sql,mysql)