sqlgroup
⑴ sql中GROUP BY的用法
GROUP
BY
是分组查询,
一般
GROUP
BY
是和
聚合函数配合使用,你可以想想
你用了GROUP
BY
按
ITEM.ITEMNUM
这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示
A
B
1
abc
1
bcd
1
asdfg
select
A,B
from
table
group
by
A
你说这样查出来是什么结果,
A
B
abc
1
bcd
asdfg
右边3条如何变成一条,所以需要用到聚合函数,比如
select
A,count(B)
数量
from
table
group
by
A
这样的结果就是
A
数量
1
3
group
by
有一个原则,就是
select
后面的所有列中,没有使用聚合函数的列,必须出现在
group
by
后面
⑵ SQL中Group By 用法是什么
GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想
你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示
A B
1 abc
1 bcd
1 asdfg
select A,B from table group by A
你说这样查出来是什么结果,
A B
abc
1 bcd
asdfg
右边3条如何变成一条,所以需要用到聚合函数,比如
select A,count(B) 数量 from table group by A
这样的结果就是
A 数量
1 3
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
⑶ SQL语句中group by能否自定义分组
use Tempdb
go
--> -->
declare @T table([姓名] nvarchar(1),[年龄] int,[工资] int)
Insert @T
select N'一',40,'5000' union all
select N'二',39,'4500' union all
select N'三',39,'4700' union all
select N'四',38,'4600' union all
select N'五',35,'4200' union all
select N'六',33,'4100' union all
select N'七',33,'4000'
Select [年龄]=case when [年龄] between 30 and 35 then '33~35' when [年龄] between 36 and 40 then '36~40' end,
[工资]=sum([工资])
from @T group by case when [年龄] between 30 and 35 then '33~35' when [年龄] between 36 and 40 then '36~40' end
(7 个资料列受到影响)
年龄 工资
----- -----------
33~35 12300
36~40 18800
(2 个资料列受到影响)
⑷ sql:group by
你用多个group by 不就行了,首先一个一个语句写 不要想着一下就完成它,比如第一条语句就根据1分组就行了,一次类推。 求和使用聚合函数sum()就行了 ,把思路弄清,慢慢写 就行了
⑸ sql中group by 是什么意思啊请教谢谢
group
by
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在
GROUP
BY
子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。
SELECT
子句中的列名必须为分组列或列函数。列函数对于
GROUP
BY
子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT
DEPT,
MAX(SALARY)
AS
MAXIMUM
FROM
STAFF
GROUP
BY
DEPT
此语句产生下列结果:
DEPT
MAXIMUM
------
---------
10
22959.20
15
20659.80
20
18357.50
38
18006.00
42
18352.80
51
21150.00
66
21000.00
84
19818.00
注意:计算的是每个部门(由
GROUP
BY
子句定义的组)而不是整个公司的
MAX(SALARY)。
将
WHERE
子句与
GROUP
BY
子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准
WHERE
子句。必须在GROUP
BY
子句之前指定
WHERE
子句。例如:
SELECT
WORKDEPT,
EDLEVEL,
MAX(SALARY)
AS
MAXIMUM
FROM
EMPLOYEE
WHERE
HIREDATE
>
'1979-01-01'
GROUP
BY
WORKDEPT,
EDLEVEL
ORDER
BY
WORKDEPT,
EDLEVEL
结果为:
WORKDEPT
EDLEVEL
MAXIMUM
--------
-------
-----------
D11
17
18270.00
D21
15
27380.00
D21
16
36170.00
D21
17
28760.00
E11
12
15340.00
E21
14
26150.00
注意:在
SELECT
语句中指定的每个列名也在
GROUP
BY
子句中提到。未在这两个地方提到的列名将产生错误。GROUP
BY
子句对
WORKDEPT
和
EDLEVEL
的每个唯一组合各返回一行。
在
GROUP
BY
子句之后使用
HAVING
子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP
BY
子句后面包含一个
HAVING
子句。
HAVING
子句可包含一个或多个用
AND
和
OR
连接的谓词。每个谓词将组特性(如
AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING
AVG(SALARY)
>
2
*
MIN(SALARY)
常数
例如:
HAVING
AVG(SALARY)
>
20000
例如,下列查询寻找雇员数超过
4
的部门的最高和最低薪水:
SELECT
WORKDEPT,
MAX(SALARY)
AS
MAXIMUM,
MIN(SALARY)
AS
MINIMUM
FROM
EMPLOYEE
GROUP
BY
WORKDEPT
HAVING
COUNT(*)
>
4
ORDER
BY
WORKDEPT
此语句产生下列结果:
WORKDEPT
MAXIMUM
MINIMUM
--------
-----------
-----------
D11
32250.00
18270.00
D21
36170.00
17250.00
E11
29750.00
15340.00
有可能(虽然很少见)查询有
HAVING
子句但没有
GROUP
BY
子句。在此情况下,DB2
将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果
HAVING
条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。
⑹ sql group by用法
1. select top 1 姓名,sum(分数) as 分数总和 from 表名 group by 姓名
order by 分数总和 desc
2. select 姓名 from 表名 group by 姓名 having min(分数)>90
测试通过
⑺ sql group by
加上显示的列,不加上avg/max聚合结果
select id_a,data_a,b.name_b,c.name_c,c.type_c from table_a a
left join (select id_b,data_b,name_b from table_b) b on a.id_a =b.id_b
left join (select id_c,data_c,type_c from table_c) c on a.id_a=c.id_c
group by id_a,data_a,b.name_b,c.name_c,c.type_c
⑻ SQL中如何GROUP BY 所有的表中信息。
group by 的用法是:你 select 哪个字段,就要 group by 哪个字段
⑼ sql里group by怎么用
SQL GROUP BY 语句
----------
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。
----------
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
语法
SELECTcolumn_name,aggregate_function(column_name)
FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name
⑽ SQL group by 问题
GROUP BY 子句
将记录与指定字段中的相等值组合成单一记录。如果使 SQL 合计函数,例如 Sum或Count,蕴含于 SELECT 语句中,会创建一个各记录的总计值。
语法
SELECT 字段表
FROM 表
WHERE标准
[GROUP BY 分组字段表]
包含 GROUP BY 子句的 SELECT 语句具有以下几个部分:
部分 说明
fieldlist 要和任何字段名别名, SQL 合计函数, 选择断定 (ALL, DISTINCT, DISTINCTROW, 或 TOP),或其他 SELECT 语句 选择一起检索的字段名称。
table 从其中获取记录的表的名称。欲知更多信息请看 FROM 子句.
criteria 选择准则。如果此语句包含一个 WHERE 子句, Microsoft Jet 数据库引擎 会在记录上应用WHERE条件,然后把值分组。
groupfieldlist 用来对记录分组的字段名,最多有 10 个字段。在 groupfieldlist 中字段名的顺序将决定组层次,由最高至最低的层次来分组。
说明
GROUP BY 是可选的。
如果在 SELECT 语句中没有 SQL 合计函数,则可省略总计值。
Null值在 GROUP BY字段中,则会被分组而不被省略。但是在任何 SQL 合计函数中不计算 Null 值。
使用 WHERE 子句可以排除您不想分组的行,而将记录分组后,用 HAVING 子句过滤这些记录。
除非包含备注数据或 OLE 对象数据,否则, GROUP BY 字段列表中的字段可引用 FROM 子句中的任何表的任何字段,即使 SELECT 语句不包含此字段,只要它至少包含一个 SQL 合计函数即可。Microsoft® Jet 数据库引擎无法在“备注对象”或“OLE 对象”字段上进行分组。
SELECT 字段列表中的全部字段必须包含在 GROUP BY 子句中,或在 SQL 合计函数中作为参数。