私は2つの列を持っています:
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
出現回数が最も多い名前のみを返したい。次に、文字列を変数に入れたいと思います。これを達成するために使用できるクエリは何ですか?
これはSQLServer2008とC#の場合です
私は2つの列を持っています:
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
出現回数が最も多い名前のみを返したい。次に、文字列を変数に入れたいと思います。これを達成するために使用できるクエリは何ですか?
これはSQLServer2008とC#の場合です
これを試してみてください、それはあなたが探しているものをあなたに与えるかもしれません。
SELECT TOP 1 name
FROM names_table
GROUP BY name
ORDER BY COUNT(1) DESC;
これは、最初に試したものと似ています。選択リストではなく、count()を順序に移動するだけです。
LinqToSql:
string mostFrequentName = myDataContext.Records
.GroupBy(x => x.Name)
.OrderByDescending(g => g.Count())
//.ThenBy(g => g.Key) in case of ties, use this for consistent results
.Select(g => g.Key)
.FirstOrDefault();
SQL:
SELECT top 1 Name
FROM Records
GROUP BY Name
ORDER BY Count(*) desc --, Name --in case of ties
LINQを使用している場合は、次のように実行できます。
var topName = MyDataContext.MyTable
.OrderByDescending( x => x.Index )
.Take( 1 )
.Select( x => x.Name );