SQLテーブルの特定の列で最も頻繁な値を見つけるにはどうすればよいですか?
たとえば、このテーブルの場合two
、最も頻繁な値であるため、次の値を返す必要があります。
one
two
two
three
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
次のようなものを試してください:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
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
がエイリアス名です。
以下のクエリは、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
..
..
SQLServerで使用します。
その中に制限コマンドのサポートがないので。
この場合、Yoはトップ1コマンドを使用して、特定の列で発生する最大値を見つけることができます(値)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
テーブルが' SalesLT.Customer
'であり、把握しようとしている列が' CompanyName
'でAggCompanyName
あり、エイリアスであると仮定します。
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
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
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;
結果:
私が使用するのが好きな1つの方法は次のとおりです。
選択する、カウント()Table_NameのVAR1として
グループ化
VAR1による注文desc
制限1