题解 | #给出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题解 文章被收录于专栏

主要是为自己做个笔记

全部评论

相关推荐

2025-11-16 01:13
宜春学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务