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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring4.1 请求rest接口406问题解决(转换JSON)[通俗易懂]

    前文说明,本来项目使用的是springmvc的模式,然后接口都是使用的是@Controller+@ResponseBody配置json转换的代码是

    2022年4月9日
    85
  • c 获取UUID_c获取程序运行路径

    c 获取UUID_c获取程序运行路径计算机获取UUIDUUID是通用唯一识别码(UniversallyUniqueIdentifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名…

    2022年8月9日
    19
  • Idea激活码最新教程2022.2.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2022.2.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2022 2 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2022 2 5 成功激活

    2025年5月26日
    1
  • JVM类加载过程

    1.JVM类加载过程1.概述从类的生命周期而言,一个类包括如下阶段:加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序进行,而解析阶段则不一定,它在某些情况下可能在初始化阶段后在开始,因为java支持运行时绑定。2.类加载时机加载(loading)阶段,java虚拟机规范中没有…

    2022年4月4日
    57
  • 用计算机亩换算成平方,平方米亩换算(平方米换算亩计算器)

    1平方米(㎡)=0.0015亩1亩=666.6666667平方米(㎡)平方米(㎡,英文:Squaremeter),是面积的公制单位。定义为边长为1米的正方形的面积。在生活中平方米通.使用国家规定的换算公式来进行换算。基本单位数量换算(按使用频率排序)。1亩=666.67平方米100平方米=0.15亩——就是农民朋友口语说的一分半地。1000平方米=1..1亩=60平方丈,1米=0.3…

    2022年4月9日
    1.4K
  • java分布式事务框架_Java分布式事务,及解决方案

    java分布式事务框架_Java分布式事务,及解决方案1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因2.1、…

    2022年5月4日
    64

发表回复

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

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