我知道我需要(尽管我不知道为什么)在SQL查询结尾处使用GROUP BY子句,它使用任何聚合函数,如countsumavg等:

SELECT count(userID), userName
FROM users
GROUP BY userName

什么时候GROUP BY会有用,什么是性能分支?

===============>>#1 票数:35 已采纳

要从具有5个以上小部件的每个窗口小部件类别中检索窗口小部件的数量,您可以执行以下操作:

SELECT WidgetCategory, count(*)
FROM Widgets
GROUP BY WidgetCategory
HAVING count(*) > 5

“having”子句是人们经常忘记的,而是选择将所有数据检索到客户端并在那里迭代。

===============>>#2 票数:14

GROUP BY类似于DISTINCT,因为它将多个记录分组为一个。

此示例借用于http://www.devguru.com/technologies/t-sql/7080.asp ,列出了Products表中的不同产品。

SELECT Product FROM Products GROUP BY Product

Product
-------------
Desktop
Laptop
Mouse
Network Card
Hard Drive
Software
Book
Accessory

GROUP BY优于DISTINCT的优点是,当与HAVING子句一起使用时,它可以为您提供精细控制。

SELECT Product, count(Product) as ProdCnt
FROM Products
GROUP BY Product
HAVING count(Product) > 2

Product      ProdCnt
--------------------
Desktop          10
Laptop            5
Mouse             3
Network Card      9
Software          6

===============>>#3 票数:4

Group By强制在返回记录之前填充整个集合(因为它是隐式排序)。

出于这个原因(以及许多其他原因),切勿在子查询中使用Group By。

===============>>#4 票数:2

计算标签使用次数可能是一个谷歌示例:

SELECT TagName, Count(*)
AS TimesUsed
FROM Tags
GROUP BY TagName ORDER TimesUsed

如果您只想要一个不同的标签值,我宁愿使用DISTINCT语句。

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC

===============>>#5 票数:0

当您想生成一个平均或汇总一堆数据的报表时,GROUP BY也会有所帮助。 您可以将GROUP按部门ID和SUM所有销售收入或AVG每个月的销售额计算在内。

  ask by Seibar translate from so

未解决问题?本站智能推荐: