以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]SQL指点下 谢谢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=43898)

--  作者:jiskin
--  发布时间:2013/12/18 14:20:00
--  [求助]SQL指点下 谢谢
如果有一张表
ID     Qty
A       1
B       2
C       4
D       3
A       2
C       1
D       6

如果用select DISTINCT 能统计不重复的ID
但是我想 如果在统计不重复的同时 Qty也能汇总 需要怎么写这个语句呢?
教教我呗亲

--  作者:Bin
--  发布时间:2013/12/18 14:23:00
--  
汇总 谁?


参考帮助的group by 语句 试试看是否能满足你需求

示例二

更多的时候,聚合函数是GROUP BY关键词配合使用的,用于进行分组统计。

例如统计每个客户订购产品的数量:

SELECT 客户,SUM(数量) AS 数量 FROM {订单} GROUP BY 客户

分组列必须同时包括在SELECT子句和GROUP BY子句中,例如上面的客户列。

示例三

统计每个客户的订单数、订购数量、订购金额:

SELECT 客户,Count(*) AS 订单数, SUM(数量) AS 数量, SUM(数量 * 单价 * (1 - 折扣)) AS 金额 FROM {订单} GROUP BY 客户

注意金额列是通过一个表达式计算得出的。

示例四

可以有多个分组列,例如统计每个客户订购不同产品的数量:

SELECT 客户, 产品, SUM(数量) AS 数量 FROM {订单} GROUP BY 客户,产品

四、HAVING字句

HAVING和WHERE有点类似,不同的是WHERE用于过滤记录,而HAVING用于过滤分组。

例如我要统计出定购PD01产品的客户以及其订购数量,而且只列出总订购数量超过500的客户:

SELECT 客户,SUM(数量) FROM {订单} WHERE 产品 = \'PD01\' GROUP BY 客户 HAVING SUM(数量) > 500


--  作者:jiskin
--  发布时间:2013/12/18 14:41:00
--  
以下是引用Bin在2013-12-18 14:23:00的发言:
汇总 谁?


参考帮助的group by 语句 试试看是否能满足你需求

示例二

更多的时候,聚合函数是GROUP BY关键词配合使用的,用于进行分组统计。

例如统计每个客户订购产品的数量:

SELECT 客户,SUM(数量) AS 数量 FROM {订单} GROUP BY 客户

分组列必须同时包括在SELECT子句和GROUP BY子句中,例如上面的客户列。

示例三

统计每个客户的订单数、订购数量、订购金额:

SELECT 客户,Count(*) AS 订单数, SUM(数量) AS 数量, SUM(数量 * 单价 * (1 - 折扣)) AS 金额 FROM {订单} GROUP BY 客户

注意金额列是通过一个表达式计算得出的。

示例四

可以有多个分组列,例如统计每个客户订购不同产品的数量:

SELECT 客户, 产品, SUM(数量) AS 数量 FROM {订单} GROUP BY 客户,产品

四、HAVING字句

HAVING和WHERE有点类似,不同的是WHERE用于过滤记录,而HAVING用于过滤分组。

例如我要统计出定购PD01产品的客户以及其订购数量,而且只列出总订购数量超过500的客户:

SELECT 客户,SUM(数量) FROM {订单} WHERE 产品 = \'PD01\' GROUP BY 客户 HAVING SUM(数量) > 500

 

搞定,多谢BIN

Select ID,sum(Qty) from {xxx} where x = xx GROUP BY ID