楼主: jinaqu

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

[复制链接]
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-2-4 09:11 | 显示全部楼层
kf_panda 发表于 2014-12-23 11:24
select Stu_Name,Class_id,lession_Name
from T_Stu_Profile a,T_Lession b
where  not exists

这只是实际当中需要用到的一个缩影,数据量想必不会小

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-2-4 09:12 | 显示全部楼层
peter1166 发表于 2014-12-24 15:24
这个SQL能插入到上表 , 自己试过么?

我是先插数据,然后倒出来的insert语句,没执行过

使用道具 举报

回复
认证徽章
论坛徽章:
55
优秀写手
日期:2015-02-12 06:00:13秀才
日期:2016-02-18 10:07:49秀才
日期:2016-02-18 10:08:142016猴年福章
日期:2016-02-23 09:58:34猴赛雷
日期:2016-02-23 10:04:24紫水晶
日期:2016-04-01 12:19:28双子座
日期:2016-04-28 10:19:29秀才
日期:2016-06-23 14:15:06奥运会纪念徽章:曲棍球
日期:2016-08-30 13:12:24奥运会纪念徽章:体操
日期:2016-09-26 11:24:37
发表于 2015-2-4 10:04 | 显示全部楼层
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

版主,minus不是比not exists效率更高吗?为什么看到很多人都用not exits而不用minus?求指导

使用道具 举报

回复
论坛徽章:
2
喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-2-4 10:17 | 显示全部楼层
这面试题…………岂能难倒我们技术人

使用道具 举报

回复
论坛徽章:
0
发表于 2018-8-30 21:56 | 显示全部楼层
本帖最后由 拿不动25 于 2018-8-31 15:08 编辑

---第一题

select
        st.stu_name,
        class_id   ,
        lession_name
from
        t_lession le,
        t_stu_profile st
where
        le.lession_id not in
        (
                select lession_id from t_score sc where sc.stu_id = st.stu_id
        )
order by
        1,3;

---第二题
select * from (
select
        le.lession_name,
        st.stu_name,
        rank() over (partition by le.lession_name order by score desc) rk ,
        score
from
        t_lession le,
        t_score sc  ,
        t_stu_profile st
where
        le.lession_id = sc.lession_id
    and sc.stu_id     = st.stu_id) as p
    pivot (max(stu_name || '+' ||score) for  p.rk in (1 as "第一名",2 as "第二名",3 as "第三名")  ) as t;

---第三题
select * from (
select stu_name,lession_name,score, sum(score) over(partition by sc.stu_id)  as "总分"
  from T_STU_PROFILE stu,T_SCORE sc,T_LESSION le
where stu.stu_id = sc.stu_id
   and sc.lession_id = le.lession_id
   and stu.class_id = '0611') as p
   pivot (max(score) for p.lession_name in ('语文', '数学', '英语','物理','化学' ) )  

使用道具 举报

回复
认证徽章
论坛徽章:
2
巨蟹座
日期:2016-04-10 09:37:03秀才
日期:2016-09-27 15:16:21
发表于 2018-8-31 16:12 | 显示全部楼层
SELECT STU_NAME, CLASS_ID, LESSION_NAME
FROM (
  SELECT stu.STU_ID, stu.STU_NAME, stu.CLASS_ID, les.LESSION_ID, les.LESSION_NAME
  FROM t_stu_profile stu, t_lession les
)
where (STU_ID, LESSION_ID) not in (select STU_ID, LESSION_ID from t_score)

使用道具 举报

回复
认证徽章
论坛徽章:
2
巨蟹座
日期:2016-04-10 09:37:03秀才
日期:2016-09-27 15:16:21
发表于 2018-8-31 16:25 | 显示全部楼层
SELECT les.LESSION_NAME, MAX(CASE WHEN rank = 1 THEN t.STU_NAME || ': ' || t.score ELSE NULL END) AS firstRank
  , MAX(CASE WHEN rank = 2 THEN t.STU_NAME || ': ' || t.score ELSE NULL END) AS secondRank
  , max(case when rank = 3 then t.STU_NAME || ': ' || t.score else null end) as thirdRank
FROM t_lession les left join (
  SELECT stu.STU_NAME, LESSION_ID, score, rank() OVER(PARTITION BY LESSION_ID ORDER BY score DESC) AS rank
  FROM t_score s, t_stu_profile stu
  WHERE stu.STU_ID = s.STU_ID
) t ON les.LESSION_ID = t.LESSION_ID
group by les.LESSION_NAME

使用道具 举报

回复
认证徽章
论坛徽章:
2
巨蟹座
日期:2016-04-10 09:37:03秀才
日期:2016-09-27 15:16:21
发表于 2018-8-31 17:18 | 显示全部楼层
SELECT *
FROM (
  SELECT stu.STU_NAME, les.LESSION_NAME, s.SCORE
  FROM t_lession les LEFT JOIN t_score s ON les.LESSION_ID = s.LESSION_ID
  LEFT JOIN t_stu_profile stu ON stu.CLASS_ID = '0611' AND stu.STU_ID = s.STU_ID
) pivot(
  max(score) for LESSION_NAME in ('语文', '数据', '英语', '物理', '化学')
)
where STU_NAME is not null

使用道具 举报

回复

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

本版积分规则 发表回复

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号
  
快速回复 返回顶部 返回列表