我有两列:
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
我只想返回出现次数最多的名称。然后我想把字符串放入一个变量中。我可以使用什么查询来实现这一点?
这是使用 SQL Server 2008 和 C#
我有两列:
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
我只想返回出现次数最多的名称。然后我想把字符串放入一个变量中。我可以使用什么查询来实现这一点?
这是使用 SQL Server 2008 和 C#
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();
数据:
SELECT top 1 Name
FROM Records
GROUP BY Name
ORDER BY Count(*) desc --, Name --in case of ties
试试这个,它可能会给你你想要的东西。
SELECT TOP 1 name
FROM names_table
GROUP BY name
ORDER BY COUNT(1) DESC;
这与您最初尝试的类似。只需将 count() 移动到 order by,而不是选择列表。
如果您使用的是 LINQ,则可以按如下方式进行:
var topName = MyDataContext.MyTable
.OrderByDescending( x => x.Index )
.Take( 1 )
.Select( x => x.Name );