牛客网数据库SQL实战61—— 按照dept_no进行汇总

牛客网数据库SQL实战61—— 对于employees表中,给出奇数行的first_name

题目描述

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

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));

输出格式:

first_name
Georgi
Chirstian
Anneke
Tzvetan
Saniya
Mary

我的解答

没看懂题目,写的脚本都没通过。。。
看解答才发现,需要根据first_name进行排序。。

我觉得最好的答案

SQL说明:

  1. 首先题目要求对first_name排序,所以子查询里有first_name的比较。
  2. 通过比较,如果 e1.first_name 是第一位,那 e2.first_name 只有1个,就是 e1.first_name 本身,1%2=1;如果 e1.first_name 排在第二位,就有它和比它小的2个 e2.first_name,2%2=0,所以不选,以此类推。
select e1.first_name
  from employees e1
where (select count(*) from employees e2 where e1.first_name >= e2.first_name)%2=1 

你可能感兴趣的:(牛课网练习,数据库,sql)