26、列出在每个部门工作的员工数量, 平均工资和平均服务期限
SELECT
d.DEPTNO,
count(e.ename) count name,
IFNULL(avg(e.sal),0)avgsal,
IFNULL(avg(TIMESTAMPDIFF(YEAR,HIREDATE,NOW())),0)avgservicetime
FROM
emp e
right JOIN
dept d ON e.DEPTNO=d.DEPTNO
GROUP BY
DEPTNO;
在mysql当中怎么计算两个日期的“年差”,差了多少年?
TimeStampDiff(间隔类型, 前一个日期, 后一个日期)
timestampdiff(YEAR,hiredate, now())
间隔类型:
SECOND 秒,
MINUTE 分钟,
HOUR 小时,
DAY 天,
WEEK 星期
MONTH 月,
QUARTER 季度,
YEAR 年
27、列出所有员工的姓名、部门名称和工资
SELECT
e.ename,
d.dname,
e.sal
FROM
emp e
JOIN dept d ON e.DEPTNO = d.DEPTNO;
28、列出所有部门的详细信息和人数
SELECT
d.*,count(e.ename)
FROM
dept d
LEFT JOIN emp e ON d.DEPTNO = e.DEPTNO
GROUP BY
d.DEPTNO;
29、列出各种工作的最低工资及从事此工作的雇员姓名
SELECT
t.*,e.ename
FROM
emp e
JOIN (
SELECT
job,
MIN(sal)minsal
FROM
emp
GROUPBY
job
) t ON e.job = t.job
AND e.sal = t.minsal;
30、列出各个部门的MANAGER( 领导) 的最低薪金
SELECT
DEPTNO,
job,
MIN(sal)
FROM
emp
WHERE
job= 'manager'
GROUP BY
DEPTNO;
31、列出所有员工的年工资,按年薪从低到高排序
SELECT
ename,
(sal+ IFNULL(COMM, 0)) * 12 AS yearsal
FROM
emp
ORDER BY
yearsal;
32、求出员工领导的薪水超过3000的员工名称与领导
SELECT
a.ename'员工',
b.ename'领导'
FROM
emp a
JOIN emp b ON a.MGR = b.EMPNO
WHERE
b.sal> 3000;
33、求出部门名称中, 带'S'字符的部门员工的工资合计、部门人数
SELECT
d.deptno,
d.loc,
d.dname,
IFNULL(SUM(e.sal),0) sumsal,
count(e.ename)countname
FROM
emp e
right JOIN dept d ON e.DEPTNO = d.DEPTNO
WHERE
d.DNAMELIKE '%s%'
GROUP BY
d.DEPTNO,
d.DNAME,
d.loc;
34、任职日期超过 35 年的员工加薪 10%显示出来
SELECT
ename,
salbeforesal,
sal* 1.1 aftersal
FROM
emp
WHERE
TIMESTAMPDIFF(YEAR,HIREDATE, NOW()) > 35;
文章转载自那些年了,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。