练习SQL利器,牛客网SQL实战题库,57~61题

57.使用含有关键字exists查找未分配具体部门的员工的所有信息

SELECT *
FROM employees
WHERE NOT EXISTS(SELECT emp_no
                FROM dept_emp
                WHERE emp_no = employees.emp_no)

58.获取employees中的行数据,且这些行也存在于emp_v中

SELECT em.*
FROM employees AS em, emp_v AS ev
WHERE em.emp_no = ev.emp_no

59.获取有奖金的员工相关信息

SELECT em.emp_no, em.first_name, em.last_name, eb.btype, sal.salary, 
(CASE eb.btype 
 WHEN 1 THEN sal.salary * 0.1
 WHEN 2 THEN sal.salary * 0.2
 ELSE sal.salary * 0.3 END) AS bonus
FROM employees AS em INNER JOIN emp_bonus AS eb
ON em.emp_no = eb.emp_no
INNER JOIN salaries AS sal
ON em.emp_no = sal.emp_no
AND sal.to_date = '9999-01-01'

注:最好自己做一个连接图表示表与表之间的联系,这道题很明显没用到dept_emp表。

60.统计salary的累计和running_total

SELECT s1.emp_no, s1.salary, 
(SELECT SUM(s2.salary)
FROM salaries AS s2 
WHERE s2.emp_no <= s1.emp_no
AND s2.to_date = '9999-01-01') AS running_total
FROM salaries AS s1
WHERE s1.to_date = '9999-01-01'
ORDER BY s1.emp_no;

61.对于employees表中,给出奇数行first_name

SELECT first_name FROM ( 
    SELECT e2.first_name,
    (SELECT COUNT(*) 
     FROM employees e1
     WHERE e1.first_name <= e2.first_name ) AS rownum 
    FROM employees e2 
    WHERE rownum % 2 =1 
);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不愿意在看那些虚幻的东西 让自己沉浸到不真实之中 虚幻 梦境 迷幻 让人沉沦的越来越深 我只想逃离那虚伪的世界 依...
    鬼暗阅读 128评论 6 4
  • 欢迎收看《反式鸡汤 Rubber Soul Soup》第035期。下面给大家介绍一下三位卡司: 你好,我是为了原创...
    网易王三三阅读 440评论 0 1
  • 你的职业生涯规划经历中最大一次挫折是怎样的?是刚刚上完课拿身边的朋友练手么?那个时候不管三七二十一把各种工具一起拽...
    白大炮阅读 455评论 0 1
  • 准备了解一下JVM,就在这里记录一下下
    snotJam阅读 293评论 0 0