设为首页 收藏本站
查看: 583|回复: 0

[经验分享] MYSQL之SQL高级运用(帮助你高效率编程)

[复制链接]

尚未签到

发表于 2016-10-21 02:11:19 | 显示全部楼层 |阅读模式
  小编说:这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL的高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。
  
1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
  如果要生成下列结果, 该如何写sql语句?
  胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
select time, sum(case when shengfu='胜' then 1 else 0 end) as '胜',sum(case when shengfu='负' then 1 else 0 end) as '负' from my_table group by time
  
  2.请教一个面试中遇到的SQL语句的查询问题
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------
select (case when a>b then a else b end ),(case when b>c then b esle c end) from my_table
  
3.面试题:一个当天日期判断的sql语句?
请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)
------------------------------------------
select * from tb where datediff(dd,SendTime,getdate())=0
  
    

  
  4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
------------------------------------------
select
(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格') as 英语,
from my_table

  
7.请用一个sql语句得出结果
从table1,table2中取出如Result所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。
  
-------------------------------------
  table1
  月份mon   部门dep       业绩yj
一月份      01                10
一月份      02                10
一月份      03                5
二月份      02                8
二月份      04                9
三月份      03                8
-----------------------------------
  table2
  部门dep            部门名称dname
01                      国内业务一部
02                      国内业务二部
03                      国内业务三部
04                      国际业务部
---------------------------------------------------
  Result
  部门名称dname     一月份    二月份      三月份
国内业务一部         10          null         null
国内业务二部         10          8             null
国内业务二部         null         5            8
国际业务部            null         null         9
---------------------------------------------------
  select a.dep,
sum(case when a.mon=1 then a.yj else 0 end) as '一月份',
sum(case when a.mon=2 then a.yj else 0 end) as '二月份',
sum(case when a.mon=3 then a.yj else 0 end) as '三月份'
from table2 b left join table1 a on a.dep=b.dep

  
8.华为一道面试题
一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
------------------------------------------
select id, Count(*) from tb group by id having count(*)>1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288905-1-1.html 上篇帖子: 关于mysql 函数 SELECT NOW( ) 的小应用 下篇帖子: mysql设置datetime为当前时间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表