32

、、、などのGROUP BY集計関数を使用するSQLクエリの最後に句を含める必要があることはわかっています(理由はわかりませんが)。countsumavg

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

他にいつGROUP BY役立つと思いますか、そしてパフォーマンスへの影響は何ですか?

4

5 に答える 5

36

5 つ以上のウィジェットを持つ各ウィジェット カテゴリからウィジェットの数を取得するには、次のようにします。

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

"having" 句は、人々が忘れがちなことです。代わりに、すべてのデータをクライアントに取得し、そこで反復することを選択します。

于 2008-08-05T19:32:03.360 に答える
15

GROUP BY は、複数のレコードを 1 つにグループ化するという点で 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
于 2008-08-19T14:02:49.113 に答える
4

Group Byは、レコードが返される前にセット全体にデータを強制的に入力します(暗黙的な並べ替えであるため)。

そのため(および他の多くの理由)、サブクエリでGroupByを使用しないでください。

于 2008-08-05T19:01:10.973 に答える
2

タグが使用された回数を数えることは、グーグルの例かもしれません:

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

単にタグの明確な値が必要な場合は、DISTINCTステートメントを使用することをお勧めします。

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC
于 2008-08-05T18:58:35.067 に答える
0

GROUP BYは、大量のデータを平均化または合計するレポートを生成する場合にも役立ちます。部門IDとSUMですべての売上高をグループ化するか、各月の売上高をAVGすることができます。

于 2008-08-05T19:00:39.557 に答える