SQL题解总结
1.按排名取奇数
解题思路:
判断是否是奇数的依据:一组n个数据(A)中的某一个数,A组数据中有m个数大于等于这个数,排序后则这个数的序号是m;
题目要取排名为奇数的数据,字母排序规律是A>B>C..;但是ASCII码实际上A<B<C,解题时就要转化为小于等于。
答案:
SELECT e1.first_name
FROM employees e1
where
(select COUNT(*) AS aa
from employees a1
where a1.first_name<=e1.first_name)%2=1
2.累计
解题思路:
题干要求:查询结果:emp_no,salary,emp_no小于等于目前emp_no的salary的总和
答案:select a.emp_no, a.salary, sum(b.salary)
from salaries as a, salaries as b
where b.emp_no <= a.emp_no
and a.to_date = '9999-01-01'
and b.to_date = '9999-01-01'
group by a.emp_no
order by a.emp_no;
3.case用法
select em.emp_no,first_name,last_name,btype,salary,
(case
when btype=1 then salary*0.1
when btype=2 then salary*0.2
else
salary*0.3 end) as bonus
from employees em join emp_bonus eb on em.emp_no=eb.emp_no
join salaries s on em.emp_no=s.emp_no
where s.to_date=
'9999-01-01'
;
在牛客网刷题体验感太差了,老是因为格式问题判错
本文地址:https://blog.csdn.net/qq_42691962/article/details/107633202
上一篇: 南通十大购物中心排行榜:好男人生活馆上榜,万象城第三
下一篇: 数据库训练之一周总结