SQL中GROUP_BY的用法

更新时间:2023-05-16 05:21:54 阅读: 评论:0

SQL中GROUP BY的用法及常用聚合函数
问:lect item.itemnum,item.in1,item.in4,inventory.location from item,inventory where item.itemnum=inventory.itemnum and
inventory.location='DYB'and item.in1='D/MTD/MRM'GROUP BY ITEM.ITEMNUM 提示错误是NOT A GROUP BY EXPRESSION
那位高人能指点一下是我是那里出错了,还有GROUP BY的用法
谢谢了哈!
答:
GROUP BY是分组查询,一般GROUP BY是和聚合函数配合使用,你可以想想,你用了GROUP BY按ITEM.ITEMNUM这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示
A B
1bc
初一英语手抄报
1bcd
1asdfg
lect A,B from table group by A
你说这样查出来是什么结果,
A B
abc
bcd
sdfgmpkg
右边3条如何变成一条,所以需要用到聚合函数,比如
lect A,count(B)数量from table group by A
这样的结果就是
A数量
3
group by有一个原则,就是lect后面的所有列中,没有使用聚合函数的列,必须出现在group by后面。
常用的聚合函数
AVG
AVG聚合函数计算一个组中非NULL值的平均值
COUNT
COUNT聚合函数返回一个显示组中行数的整数值
COUNT_BIG
和COUNT功能一样,只是COUNT_BIG返回bigint数据类型值
MAX
MAX聚合函数返回一组非NULL值中的最大值
MIN
MIN聚合函数返回一组非NULL值中的最小值
SUM
SUM聚合函数返回一个表达式中所有非NULL值的总和
STDEV
STDEV函数根据数据母体的样本返回由表达式提供的所有值的标准差STDEVP
STDEVP函数也返回由表达式提供的所有值的标准差,只是它计算整个数据母体
VAR
VAR函数根据数据母体的样本返回由表达式提供的值的方差
VARP
VARP函数也返回表达式整个数据母体提供的值的方差
聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER中具体有哪些聚合函数呢?我们来一一看一下:
版本英文
1.AVG返回指定组中的平均值,空值被忽略。
例:lect prd_no,avg(qty)from sales group by prd_nokowtow
2.COUNT返回指定组中项目的数量。
例:lect count(prd_no)from sales
3.MAX返回指定数据的最大值。
例:lect prd_no,max(qty)from sales group by prd_no
4.MIN返回指定数据的最小值。
例:lect prd_no,min(qty)from sales group by prd_no
5.SUM返回指定数据的和,只能用于数字列,空值被忽略。
例:lect prd_no,sum(qty)from sales group by prd_no
6.COUNT_BIG返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:lect count_big(prd_no)from sales
7.GROUPING产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1,当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.
例:lect prd_no,sum(qty),grouping(prd_no)from sales group by prd_no with rollup
8.BINARY_CHECKSUM返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。
例:lect prd_no,binary_checksum(qty)from sales group by prd_no
9.CHECKSUM_AGG返回指定数据的校验值,空值被忽略。
例:lect prd_no,checksum_agg(binary_checksum(*))from sales group by prd_no
10.CHECKSUM返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。
11.STDEV返回给定表达式中所有值的统计标准偏差。
例:lect stdev(prd_no)from sales
12.STDEVP返回给定表达式中的所有值的填充统计标准偏差。
例:lect stdevp(prd_no)from sales
abroad是什么意思
13.VAR返回给定表达式中所有值的统计方差。
例:lect var(prd_no)from sales
14.VARP返回给定表达式中所有值的填充的统计方差。
例:lect varp(prd_no)from sales
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
UNION运算符是将两个或更多查询的结果组合为单个结果集
使用UNION组合查询的结果集有两个最基本的规则:
1.所有查询中的列数和列的顺序必须相同。
2.数据类型必须兼容
a.UNION的结果集列名与第一个lect语句中的结果集中的列名相同,其他lect语句的结果集列名被忽略
b.默认情况下,UNION运算符是从结果集中删除重复行。如果使用all关键字,那么结果集将包含所有行并且不删除重复行
c.sql是从左到右对包含UNION运算符的语句进行取值,使用括号可以改变求值顺序
例如:
lect*from tablea
union all
(
lect*from tableb
union all
lect*from tablec
)
这样就可以先对tableb和tablec合并,再合并tablea
d.如果要将合并后的结果集保存到一个新数据表中,那么into语句必须加入到第一条lect中
e.只可以在最后一条lect语句中使用order by和compute子句,这样影响到最终合并结果的排序和计数汇总
CUBE汇总数据
CUBE运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。
扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。
CUBE运算符在SELECT语句的GROUP BY子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。
GROUP BY应指定维度列和关键字WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
prosperous什么意思下列查询返回的结果集中,将包含Item和Color的所有可能组合的Quantity 小计:
-->Title:生成測試數據
-->Author:wufeng4552
-->Date:2009-09-1014:36:20
if not object_id('Tempdb..#t')is null
drop table#t
Go
Create table#t([Item]nvarchar(5),[Color]nvarchar(4),[Quantity]int) Inrt#thusband是什么意思
lect N'Table',N'Blue',124union all
lect N'Table',N'Red',223union all
lect N'Chair',N'Blue',101union all
lect N'Chair',N'Red',210
Go
lect[Item],
[Color],
sum([Quantity])[Quantity]
from#t group by[Item],[Color]with cube
/
*
Item Color Quantity
---------------------
Chair Blue101
Chair Red210
Chair NULL311
螳螂捕蝉翻译Table Blue124
Table Red223
Table NULL347
NULL NULL658
NULL Blue225
NULL Red433
*/
/*CUBE操作所生成的空值带来一个问题:如何区分CUBE操作所生成的NULL 值和从实际数据中返回的NULL值?
这个问题可用GROUPING函数解决。
如果列中的值来自事实数据,则GROUPING函数返回0;如果列中的值是CUBE 操作所生成的NULL,则返回1。
在CUBE操作中,所生成的NULL代表全体值。可将SELECT语句写成使用GROUPING函数将所生成的NULL替换为字符串ALL。
因为事实数据中的NULL表明数据值未知,所以SELECT语句还可译码为返回字符串UNKNOWN替代来自事实数据的NULL。
例如:
*/
-->Title:生成測試數據
-->Author:wufeng4552
-->Date:2009-09-1014:36:20
if not object_id('Tempdb..#t')is null
drop table#t
Go
米兰敕令Create table#t([Item]nvarchar(5),[Color]nvarchar(4),[Quantity]int) Inrt#t
lect N'Table',N'Blue',124union all
lect N'Table',N'Red',223union all玉米的英文
lect N'Chair',N'Blue',101union all
lect N'Chair',N'Red',210
Go
lect[Item]=ca when grouping([Item])=1then'ALL'el isnull(Item, 'UNKNOWN')end,
[Color]=ca when grouping([Color])=1then'ALL'el
isnull([Color],'UNKNOWN')end,
sum([Quantity])[Quantity]
from#t group by[Item],[Color]with cube
/*
Item Color Quantity

本文发布于:2023-05-16 05:21:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/110238.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:返回   数据   结果   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图