146

SQLテーブルの特定の列で最も頻繁な値を見つけるにはどうすればよいですか?

たとえば、このテーブルの場合two、最も頻繁な値であるため、次の値を返す必要があります。

one
two
two
three
4

9 に答える 9

225
SELECT
  <column_name>,
  COUNT(<column_name>) AS `value_occurrence` 

FROM
  <my_table>

GROUP BY 
  <column_name>

ORDER BY 
  `value_occurrence` DESC

LIMIT 1;

<column_name>とを置き換え<my_table>ます。列の最も一般的な値1を表示する場合は、を増やします。N

于 2012-09-02T11:34:06.463 に答える
59

次のようなものを試してください:

SELECT       `column`
    FROM     `your_table`
    GROUP BY `column`
    ORDER BY COUNT(*) DESC
    LIMIT    1;
于 2012-09-02T11:33:47.120 に答える
29

tblpersonテーブル名をとして、列名をとして考えてみましょうcity。都市の列から最も繰り返される都市を取得したい:

 select city,count(*) as nor from tblperson
        group by city
          having count(*) =(select max(nor) from 
            (select city,count(*) as nor from tblperson group by city) tblperson)

これnorがエイリアス名です。

于 2013-08-03T03:49:06.147 に答える
14

以下のクエリは、SQLServerデータベースでうまく機能しているようです。

select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC

結果:

column          MOST_FREQUENT
item1           highest count
item2           second highest 
item3           third higest
..
..
于 2016-01-29T09:48:58.093 に答える
3

SQLServerで使用します。

その中に制限コマンドのサポートがないので。

この場合、Yoはトップ1コマンドを使用して、特定の列で発生する最大値を見つけることができます(値)

SELECT top1 
    `value`,
    COUNT(`value`) AS `value_occurrence` 
FROM     
    `my_table`
GROUP BY 
    `value`
ORDER BY 
    `value_occurrence` DESC;
于 2012-12-26T23:26:24.297 に答える
2

テーブルが' SalesLT.Customer'であり、把握しようとしている列が' CompanyName'でAggCompanyNameあり、エイリアスであると仮定します。

Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
于 2015-12-28T07:28:05.690 に答える
0

LIMITを使用できない場合、またはLIMITはクエリツールのオプションではありません。代わりに「ROWNUM」を使用できますが、サブクエリが必要になります。

SELECT FIELD_1, ALIAS1
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1
    FROM TABLENAME
    GROUP BY FIELD_1
    ORDER BY COUNT(FIELD_1) DESC)
WHERE ROWNUM = 1
于 2015-11-24T16:59:39.277 に答える
0

ID列があり、IDごとに別の列から最も反復的なカテゴリを検索する場合は、以下のクエリを使用できます。

テーブル:

テーブルの内容

クエリ:

SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;

結果:

クエリ結果

于 2019-04-01T14:30:24.357 に答える
-1

私が使用するのが好きな1つの方法は次のとおりです。

選択する、カウント()Table_NameのVAR1として

グループ化

VAR1による注文desc

制限1

于 2019-05-06T10:14:12.793 に答える