sql常见查询语句

简介: sql常见查询语句

1、查询每门课程都大于80的同学姓名(student)


  • 前提:创建student表插入数据:
insert into `sql`.`student` (`name`, `course`, `score`) values ('陈玲', '语文', '88');
insert into `sql`.`student` (`name`, `course`, `score`) values ('陈玲', '数学', '90');
insert into `sql`.`student` (`name`, `course`, `score`) values ('陈玲', '英语', '98');
insert into `sql`.`student` (`name`, `course`, `score`) values ('胡云峰', '语文', '78');
insert into `sql`.`student` (`name`, `course`, `score`) values ('胡云峰', '数学', '80');
insert into `sql`.`student` (`name`, `course`, `score`) values ('胡云峰', '英语', '85');
insert into `sql`.`student` (`name`, `course`, `score`) values ('邓兰', '语文', '88');
insert into `sql`.`student` (`name`, `course`, `score`) values ('邓兰', '数学', '70');
insert into `sql`.`student` (`name`, `course`, `score`) values ('邓兰', '英语', '68');

查询结果:


b0784bd6dd4e4c0ea2eca5a5258e6208.png

1. 首先我们要通过group by对姓名组合进行查询


select name from student 
group by name

查询结果:


fa86f843f60e48db93b2ca01cf16a041.png

2. 然后用min()聚合函数对每位同学最低的分数查询出来


select name,min(score) from student 
group by name


查询结果:

511f9ccc51ad465d877e17c798250ba5.png

3. 再用having筛选出最低分数都大于80的同学


select name,min(score) from student 
group by name 
having min(score)>80


查询结果:

06d1ef3d4ab14fa7862d179ab9d76306.png


4. 最后一步,因为我们只查询学生的姓名,不用查询分数,所以我们再嵌套一层函数,来只查询姓名即可


select name from 
(select name,min(score) from student group by name having min(score)>80) 
student


查询结果:


19f4dbcef10646839f73e0c3f6a296eb.png

PS:关于聚合函数


  • 聚合函数,顾名思义,就是将多条数据聚合成一条数据的函数(从N到1)
  • 常用的聚合函数有:max(),min(),sum(),avg(),count()
  • 其他:group by 通常与聚合函数一起,用来(分组数据),having 则用来(筛选条件)


2、行转为列查询(case/when/then/else/end/as)


  • student表中course列出现了大量重复的数据,所以合并成列名,方便观看使用


1.我们可以使用(case/when/then/)进行转化:


select name,
sum(case course when '语文' then score else 0 end) as '语文',
sum(case course when '数学' then score else 0 end) as '数学',
sum(case course when '英语' then score else 0 end) as '英语'
from student
group by name

2.或者也可以用if进行转化,效果也是一样的:

select name,
sum(if(course='语文',score,0)) as '语文',
sum(if(course='数学',score,0)) as '数学',
sum(if(course='英语',score,0)) as '英语'
from student
group by name

之前的查询结果

b0784bd6dd4e4c0ea2eca5a5258e6208.png

转为列之后的查询结果:

ba8e9cb3221c4173a00faa61fb24d119.png

3、对总成绩进行排名


1.首先我们通过rollup把总成绩算出来:

select ifnull(name,'总成绩') as name,
sum(if(course='语文',score,0)) as '语文',
sum(if(course='数学',score,0)) as '数学',
sum(if(course='英语',score,0)) as '英语',
sum(score) as '总成绩'
from student
group by name with rollup

查询结果:


0767974546824934bcea682a789dc25b.png

相关文章
|
4天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
11天前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
47 5
|
12天前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
11天前
|
SQL 移动开发 大数据
SQL语句查询连续六天满足条件的记录
在数据库管理和数据分析中,我们经常需要查询符合特定时间范围内连续几天的记录
|
14天前
|
SQL 数据挖掘 关系型数据库
SQL查询次数大于1的记录:高效技巧与方法
在数据库管理中,经常需要统计某些操作的次数,特别是当需要找出哪些记录或值出现的次数超过一定阈值(如大于1次)时
|
14天前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
27 3
|
14天前
|
SQL 数据库
SQL查询中排除空值列的技巧与方法
在数据库查询中,经常需要处理包含空值(NULL)的数据列
|
14天前
|
SQL Oracle 关系型数据库
SQL查询默认表空间的技巧与方法
在数据库管理中,表空间是存储数据库对象(如表、索引等)的逻辑空间单元
|
15天前
|
SQL 存储 缓存
SQL数据库查询详解
数据库是现代信息社会的基石,它们存储和管理着大量的数据。而SQL(StructuredQueryLanguage)作为一种强大的数据库查询语言,广泛应用于各种数据库系统中。本文将详细介绍SQL数据库查询的基本概念、语法、常用操作以及优化策略。一、SQL数据库查询概述SQL是一种用于管理关系数据库的标
67 3
|
16天前
|
SQL 存储 数据挖掘
SQL Server 日期格式查询详解
SQL Server 日期格式查询详解
82 2