SQL高级运用「建议收藏」

SQL高级运用

大家好,又见面了,我是全栈君。

这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL的高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。

读取数据库中的重复记录 (group by & having)

一个表中的Id有多条重复记录,所有重复的id读取出来。

select id, COUNT(*) as count from tb GROUP BY id HAVING count>1

字符串替换操作

将manhua_name字段里所有的“漫画街”替换为“wangking717”

UPDATE table1 SET manhua_name = REPLACE(manhua_name,"漫画街","wangking717");

指定字符串排序

users表

username sex
wk 0
lj 1
kk 0

请将查询出来的数据按照”lj”,”wk”,”kk”排序显示

SELECT * FROM user ORDER BY FIND_IN_SET(username,'lj,wk,kk')

一道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

请教一个面试中遇到的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个字段:语文,数学,英语。其中有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

请用一个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

SQL高级运用「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111893.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python新手写出漂亮的爬虫代码1——从html获取信息

    Python新手写出漂亮的爬虫代码1——从html获取信息Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说“老子会爬虫”,就感觉特别有逼格,但是又不知从何入手,这里,博主给大家纠正一个误区:爬虫并不神秘,也不高级,是一个非常好上手和掌握的东西(当然,里面也有很多坑,也有很多细节,展开说的话其实也蛮复杂的,不过它的模式和套路就摆在那里,看了小编的博客,保证你能爬

    2022年5月2日
    34
  • chrome添加扩展程序无效_vue兼容性问题

    chrome添加扩展程序无效_vue兼容性问题chrome扩展程序中以编程方式插入内容脚本不生效的问题

    2022年4月20日
    53
  • mac打开idea无反应_idea安装完打不开

    mac打开idea无反应_idea安装完打不开前提纪要如果你是因为修改了idea.vmoptions配置文件后重启打不开请看此方法若不是请勿浪费时间首先我们找错误的方法找到访达—>应用程序—->找到你要打开的idea右键—->选择显示包内容—->Contents—->MacOS—->idea打开会跳出黑窗口请寻找报错信息每个人的不一样我的是说我的jdk版本信息对不上回想一下昨天改了配置文件的垃圾回收器可能改错了首先改这个目录的idea.vmop.

    2022年8月30日
    3
  • 【转】python中的map,filter,reduce,lambda

    【转】python中的map,filter,reduce,lambda

    2021年8月21日
    51
  • java 调用win32 api 学习总结

    java 调用win32 api 学习总结java使用JInvoke调用windowsAPI使用jinvoke调用windowsAPI。jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样。 官网使用参考:http://www.jinvoke.com/calling-the-win32-api-from-java 一个弹出框的例子(这种代码用于调用任何dll,不只是windows的

    2022年10月9日
    0
  • 购书记

    购书记

    2021年5月8日
    130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号