0

私はMS SQL Serverに要件があり、カウントごとにキーワードのグループをフェッチし、カウント値が同じ最新のカウントが一番上にある必要がある場合、

テーブル - フィールド

id, keyword, datetime

クエリ

SELECT 
       keywords,count( * ) as count 
FROM 
       xyztable 
GROUP BY 
       keywords 
ORDER BY
       count( * )

ここで、同じキーワードをカウントし、日時順に並べる必要がある場合

ありがとう、M.K.

4

2 に答える 2

1

ORDER BY を次のように変更します。

ORDER BY count(*) DESC,datetime DESC

複数の列を順番に並べることができ、並べた順序でランク付けされます。この場合、最初にcount(*)それまでに注文すると、同じものcount(*)は で注文されdatetimeます。

編集:

あなたの質問を読み直すと、私は完全に正確ではなかったことがわかります。はい、複数の列で注文できますが、あなたの場合、そこに集計関数 ( COUNT(*)) があるため、これも入れないとエラーが発生しdatetimeますgroup by

于 2013-10-01T17:31:46.470 に答える
0

これがあなたが探しているものだと思います:

SELECT keywords, count( * ) counts 
FROM t 
GROUP BY keywords 
ORDER BY count( * ), max(date) desc 

サンプルデータ:

create table t(keywords varchar(50), date date)

insert into t values
('x','20130901'),('x','20130904'),
('y','20130901'),('y','20130902'),('y','20130903'),
('z','20130903'),('z','20130906')

結果 (フィドルのデモ):

| KEYWORDS | COUNTS |    MAXDATE |
-----------|--------|------------|--
|        z |      2 | 2013-09-06 |
|        x |      2 | 2013-09-04 |
|        y |      3 | 2013-09-03 |
于 2013-10-01T17:48:08.817 に答える