0

私は2つの列を持っています:

INDEX     NAME
 125      john
 125      dave
 125      dave
 130      john
 131      dave

出現回数が最も多い名前のみを返したい。次に、文字列を変数に入れたいと思います。これを達成するために使用できるクエリは何ですか?

これはSQLServer2008とC#の場合です

4

3 に答える 3

2

これを試してみてください、それはあなたが探しているものをあなたに与えるかもしれません。

SELECT TOP 1 name 
  FROM names_table 
 GROUP BY name
 ORDER BY COUNT(1) DESC;

これは、最初に試したものと似ています。選択リストではなく、count()を順序に移動するだけです。

于 2012-04-12T01:08:07.130 に答える
2

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
于 2012-04-12T01:04:29.450 に答える
0

LINQを使用している場合は、次のように実行できます。

var topName = MyDataContext.MyTable
  .OrderByDescending( x => x.Index )
  .Take( 1 )
  .Select( x => x.Name );
于 2012-04-12T01:01:05.690 に答える