首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。...数据分组(GROUP BY): SQL中数据可以按列名分组,搭配聚合函数十分实用。...分组中也可以加入筛选条件WHERE,不过这里一定要注意的是,执行顺序为:WHERE过滤→分组→聚合函数。牢记!...HAVING过滤条件: 之前说了分组操作、聚合函数、WHERE过滤的执行顺序,那如果我们希望在聚合之后执行过滤条件怎么办? 例,我们想查询平均年龄在20岁以上的班级 能用下面的语句吗?...这里再啰嗦一句 SQL的执行顺序: –第一步:执行FROM –第二步:WHERE条件过滤 –第三步:GROUP BY分组 –第四步:执行SELECT投影列 –第五步:HAVING条件过滤 –第六步:执行

5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL(五)汇总分组数据

    一、汇总数据 工作中经常需要汇总数据而不是将它们全部检索出来(实际数据本身:返回实际数据是对时间和处理资源的浪费),这种类型的检索有以下特点: ①确定表中的行数(或者满足某个条件或包含某个特定值的行数)...products group by vend_id; 这条SQL语句指定了2个列,group by指示MySQL按照vend_id排序并且分组(如果使用group by,则不必指定要计算的每个组) group...); ②如果在group by子句中嵌套分组,数据将在最后规定的分组上进行汇总,即:建立分组时,指定的所有列都一起计算(所以不能从个别列取回数据); ③group by子句中列出的每个列都必须是检索列或有效的表达式...,可以得到每个分组以及每个分组汇总级别(针对每个分组)的值。...(*) as orders from orders group by cust_id having count(*) >= 2; 这条SQL语句中的having子句过滤count(*)>=2(2个以上的分组

    4.7K20

    复杂sql分组查询 ( pivot)

    一个数据表里面字段有年、月、日、金额、支付方式等字段,然后现在想写个sql语句,把每一天的每种支付方式金额(支付方式有多重)排在同一行, 最后在增加一列小计当前的所有支付方式的金额。...如下图: 原sql查询出来的结果是这样的: ?...------------------------------------------------------------------------------------------- 然后想实现的sql...这可为难了我了,简单的增删改查左右链接sql语句我还会写,这个稍微复杂一点我就不知道如何下手了。该怎么分组,然后把行增加为列呢? 去找度娘搜的时候,都不知道怎么描述自己的想搜的关键字。...最后找了一位sql高手同学帮忙解决了这个问题, 人家只是一句简单的sql语句就把我的需求给实现了,实在是让我佩服!这个pivot关键是什么东东,我还第一次看见,从来没用过,这么强大!

    3.5K30

    SQL中的分组

    分组集的定义 是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用"UNION ALL",计算多个结果集的并集。...分组集种类 SQL Server的分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 GROUPING...并且更加的 高效,解析存储一条SQL于语句 GROUP SETS示例 我们以Customers表为例,其内容如下: 我们先分别对城市和省份进行分组,统计出他们的数量 SELECT 城市,NULL 省份,...,并且对第一列的数据在每个组内还进行一次汇总,最后对所有的数据再进行一次汇总,所以相比GROUPING SETS会多了个所以数据的汇总。...SELECT 省份, 城市, COUNT(客户ID) 数量 FROM Customers GROUP BY 省份,城市 WITH CUBE 结果如下: 在ROLLUP的基础上,还会将第一列每组的汇总数据额外显示在最后

    8310

    sql技术汇总

    where id=t.id-1) 5、select 1 from table的用法 当我们只关心数据表有多少记录行而不需要知道具体的字段值时,类似“select 1 from tblName”是一个很不错的SQL...这样可以减少系统开销,提高运行效率,因为这样子写的SQL语句,数据库引擎就不会去检索数据表里一条条具体的记录和每条记录里一个个具体的字段值并将它们放到内存里,而是根据查询到有多少行存在就输出多少个“1”...8、GROUP_CONCAT可以把同一个分组的某个字段值合并在一块 9、MySql 里的IFNULL用法:IFNULL(expr1,expr2)的用法:假如expr1 不为 NULL,则 IFNULL(...12、select * from comment group by user_id; 这条语句只会返回每个分组的第一条数据 13、分组top1的简单方法:先倒排序,再分组即可。...首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。

    1.2K20

    SQL学习之分组数据Group by

    (3)大多数SQL不允许Group By带有可变长度的数据类型(如文本,text类型)。 (4)除聚集计算语句外,SELECT语句中的每一列都必须在Group By中给出。...(5)如果分组列中包含具有Null值的行,则Null将作为一个分组返回,如果列中有多行Null,他们将作为一个分组返回。...(7)如果在Group By子句中嵌套了分组,数据将在最后指定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(不能从个别的列中取回数据)。...3、Group By All+多个字段,Group By+多个字段 在SQL Server 中Group By All+多个字段和Group By+多个字段在效果是一样的,都是通过多个字段来分组!...ok,解决需求,通过上面的结果图,我们可以看出,三个老师所教的课程基本都只教一个班,除了t003老师的sql SERVER 2005教了两个班,当然我们实际的业务中,并不会这样建表,我这边指示为了演示Group

    1.3K50

    SQL学习之HAVING过滤分组

    1、SQL除了能用Group By分组数据之外,SQL还允许过滤分组,规定包括那些分组,排除那些分组。例如,你可能想要列出至少有两个订单的所有顾客。...事实上,WHERE没有分组的概念。 因此,SQL提供了专门用来过滤分组的类似与WHERE子句的子句,HAVING子句,事实上,几乎所有类型的WHERE子句都可以用HAVING来代替。...,通过COUNT()函数计算出每个分组的总记录数),然后HAVING子句告诉SELECT语句只检索出所有分组中的总记录数大于等于2的分组记录。...2、WHERE和HAVING的差别: (1)WHERE在数据分组前进行过滤,HAVING在数据分组之后进行过滤,这是个很重要的区别,WHERE排除的行不包括在分组中。...where 过滤了Person=''的列值,然后Group By在对剩余的数据进行分组,之后HAVING子句进行分组过滤!

    1.7K50

    利用 SQL 实现数据分组与透视

    数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和、计数、平均值、标准差等,本文使用SQL对数据进行数据分组和数据透视,下面一起来学习。...#单列分类汇总 SELECT ssex,COUNT(sid) AS id_count FROM student GROUP BY ssex ORDER BY id_count DESC; ?...多列分组 而对多列数据分组,可以在GROUP BY后面跟多个字段,下面这条SQL语句同时根据课程号和学号进行分组,然后以分数和降序排列。...#多列分类汇总 SELECT CId,SId,SUM(score) AS score_sum FROM score GROUP BY CId,SId HAVING score_sum >160 ORDER...数据透视 在SQL中想要达到数据透视表的功能,需要GROUP BY与CASE WHEN结合使用,下面这条SQL语句可以计算不同分数段的人数,现用CASE WHEN对不同的分数段进行分类,然后,用GROUP

    2.4K20

    sql sever分组查询和连接查询

    分组查询 select 查询信息 from 表名 where 条件 group by 按照列分组(可多个 ,隔开) order by 排序方式 (查询信息如果列名和聚合函数同时出现,要么在聚合函数中出现...,要么就使用分组进行查询) having 条件    分组筛选(一般和group by连用,位置在其后) where:用来筛选from子句指定的操作所产生的行 group by:用来分组where子句输出...having:用来从分组的结果中筛选行 1.分组查询是针对表中不同的组分类统计和输出的 2.having子句能够在分组的基础上,再次进行筛选 3.在SQL语句中使用次序,where-->group by...-->having 解剖: 1.select  查询什么 2.from  从哪里查询 3.where  列名条件(模糊查询,关系表达式查询) 4.grop by  分组查询 5.haing  分组后的聚合函数筛选

    2.2K50
    领券