题解 | #给出employees表中排名为奇数行的first_name#
给出employees表中排名为奇数行的first_name
http://www.nowcoder.com/practice/e3cf1171f6cc426bac85fd4ffa786594
我的方法:两个子查询
select first_name from employees where first_name in
(select first_name from
(select first_name,dense_rank()over(order by first_name) r from employees)t1
where r%2=1)
法二:join
SELECT
e.first_name
FROM employees e JOIN
(
SELECT
first_name
, ROW_NUMBER() OVER(ORDER BY first_name ASC) AS r_num
FROM employees
) AS t
ON e.first_name = t.first_name
WHERE t.r_num % 2 = 1;
法三:count+自连接得出排名
select e1.first_name from employees e1
where
(
select count(*) from employees e2 where
e1.first_name>=e2.first_name
)%2 = 1
SQL题解 文章被收录于专栏
主要是为自己做个笔记
美的集团公司福利 819人发布
查看3道真题和解析