题
我知道我需要有(虽然我不知道为什么)a GROUP BY
条款在结束SQL查询使用的任何总体功能喜欢 count
, sum
, avg
, 等:
SELECT count(userID), userName
FROM users
GROUP BY userName
当其他人会 GROUP BY
是有用的,什么是性能的影响?
解决方案
检索的数量的部件来自每个部件的类别,已有超过5件你可以做到这一点:
SELECT WidgetCategory, count(*)
FROM Widgets
GROUP BY WidgetCategory
HAVING count(*) > 5
在"具有"条款是什么人们常常忘记,而不是选择的检索他们所有的数据向客户和迭代过它在那里。
其他提示
小组通过类似于不同在于它的团体多次记录到的一种。
这个例子中,借用了 http://www.devguru.com/technologies/t-sql/7080.asp, 列出了不同的产品在产品表。
SELECT Product FROM Products GROUP BY Product
Product
-------------
Desktop
Laptop
Mouse
Network Card
Hard Drive
Software
Book
Accessory
优势的组通过不同的是,它可以给你一颗粒状的控制时使用的一个具有条款。
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
小组通过部队的整套填充之前返回的记录(因为它是一个隐含的排序).
由于这个原因(和其他许多人),从来没有使用一个集团通过在一个子查询。
计数的次数标签是使用可能是一个谷歌例如:
SELECT TagName, Count(*)
AS TimesUsed
FROM Tags
GROUP BY TagName ORDER TimesUsed
如果你只是想要一个不同的价值的标签,我更愿意使用 DISTINCT
发言。
SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC
集团也可以帮助当你想要产生一份报告,平均或总结一堆的数据。你可以组由新闻部ID和总结的所有销售收入或平均数的销售每个月。
不隶属于 StackOverflow