楼主: jinaqu

[SQL] 【讨论】大公司面试题,测测你的SQL水平

[复制链接]
论坛徽章:
3
ITPUB社区12周年站庆徽章
日期:2013-10-08 14:56:35ITPUB社区12周年站庆徽章
日期:2013-10-08 15:00:34优秀写手
日期:2013-12-18 09:29:16
发表于 2014-12-24 18:16 | 显示全部楼层
jinaqu 发表于 2014-12-18 21:41
我目前还在琢磨第二个,在网上有看到大神贴的代码,甚是佩服,我这里分享给大家,多提意见哈!!

with b1 as (
select a1.lession_id,a1.lession_name,a2.stu_id,a3.stu_name,a2.score
from t_lession a1
left join t_score a2 on (a1.lession_id=a2.lession_id)
left join t_stu_profile a3 on (a2.stu_id=a3.stu_id)
),
b2 as(
select lession_name,stu_name||'+'||score mean,rn from (
select lession_name,stu_name,score,row_number() over (PARTITION by lession_id order by score desc) rn from b1
) where rn<=3
)
select lession_name,max(decode(rn,1,mean,'')) 第一名,max(decode(rn,2,mean,'')) 第二名,max(decode(rn,3,mean,'')) 第三名
from b2 group by lession_name

使用道具 举报

回复
论坛徽章:
0
发表于 2014-12-25 01:02
select Stu_name,Lession_name,class_name from (select Stu_id,Lession_name from T_score right outer join T_lession using (lession_id) where
Score is NULL) natural join T_stu_profile order by Stu_name;

认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 01:37 | 显示全部楼层
huangfei2zou 发表于 2014-12-24 18:16
with b1 as (
select a1.lession_id,a1.lession_name,a2.stu_id,a3.stu_name,a2.score
from t_lession  ...

with as 代码结构很清晰,很不错

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 01:46 | 显示全部楼层
jinaqu 发表于 2014-12-18 17:57
小伙伴们,你们写了之后也帮忙贴出来showshow吧,大家一起学习学习,东西很简单,但是能看得出来细节的处理 ...

这个是比较有含金量的,主要是看性能优化的能力,大家可以多提提自己的观点,相互学习

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 13:28 | 显示全部楼层
jinaqu 发表于 2014-12-19 22:30
3).有表财务表,数据如下
year       Profit
2007       1000000000

小伙伴们,这个题有更好的办法解决吗?看看你们SQL掌握了多少哟,经过大神指点,已经有比较不错的方法可以实现了

使用道具 举报

回复
论坛徽章:
8
奥运会纪念徽章:自行车
日期:2012-07-30 15:04:15奥运会纪念徽章:水球
日期:2012-08-22 11:52:38奥运会纪念徽章:皮划艇激流回旋
日期:2012-09-03 11:01:53现代
日期:2013-09-09 11:38:05雪佛兰
日期:2013-09-30 14:52:08优秀写手
日期:2014-03-07 06:00:14沸羊羊
日期:2015-03-04 14:53:522015年新春福章
日期:2015-03-06 11:58:39
发表于 2014-12-25 18:37 | 显示全部楼层
dingjun123 发表于 2014-12-18 18:23
select a.stu_name,a.class_id,b.lession_name
from t_stu_profile a,t_lession b
where not exists

兔神,这题有点像你的稠化报表应用。

使用道具 举报

回复
论坛徽章:
0
发表于 2014-12-26 01:55 | 显示全部楼层
我的不行啊

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-26 09:04 | 显示全部楼层
huangfei2zou 发表于 2014-12-24 18:16
with b1 as (
select a1.lession_id,a1.lession_name,a2.stu_id,a3.stu_name,a2.score
from t_lession  ...

非常棒,谢谢,谢谢!

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-26 09:05 | 显示全部楼层
jinaqu 发表于 2014-12-19 22:30
3).有表财务表,数据如下
year       Profit
2007       1000000000

关于这个题,在另一个帖子有解http://www.itpub.net/forum.php?m ... ;page=2#pid22767695

使用道具 举报

回复
认证徽章
论坛徽章:
13
2014年新春福章
日期:2014-02-18 16:44:08托尼托尼·乔巴
日期:2016-12-26 05:20:28秀才
日期:2016-09-27 15:16:21处女座
日期:2016-01-09 11:02:40双鱼座
日期:2016-01-09 01:59:11懒羊羊
日期:2015-04-26 10:17:20懒羊羊
日期:2015-03-14 11:58:162015年新春福章
日期:2015-03-06 11:58:392015年新春福章
日期:2015-03-04 14:53:16马上有房
日期:2014-11-07 17:50:36
发表于 2014-12-29 06:44 | 显示全部楼层
jinaqu 发表于 2014-12-18 17:52
建表语句:

表 t_score 的字段 stu_id 不应该是 primary key吧。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表