數量最多的一個字符串出現的TOP(1)我有兩列:使用SQL Server中獲得一列
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
我想用最出現的次數只返回名稱。然後我想把字符串放入一個變量中。什麼是我可以用來實現此目的的查詢?
這是SQL Server 2008和C#
數量最多的一個字符串出現的TOP(1)我有兩列:使用SQL Server中獲得一列
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
我想用最出現的次數只返回名稱。然後我想把字符串放入一個變量中。什麼是我可以用來實現此目的的查詢?
這是SQL Server 2008和C#
試試這個,它可能會給你你正在尋找的東西。
SELECT TOP 1 name
FROM names_table
GROUP BY name
ORDER BY COUNT(1) DESC;
這與您最初的嘗試類似。只需將count()移至order by的位置,而不是選擇列表。
爲什麼派生表?只要一個人做。 'SELECT TOP 1名稱FROM表GROUP BY BY ORDER BY COUNT(1)DESC'。 – 2012-04-12 01:09:01
好點。 SELECT TOP 1 name FROM @tbl GROUP BY名稱 ORDER BY COUNT(1)DESC; 工作得很好,而且更乾淨。 – 2012-04-12 01:16:02
這對我有效,謝謝。 – Alternatex 2012-04-12 01:40:45
如果你使用LINQ,你可以如下做到這一點:
var topName = MyDataContext.MyTable
.OrderByDescending(x => x.Index)
.Take(1)
.Select(x => x.Name);
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-12 01:00:00
我有一張桌子,裏面裝滿了名字。不要介意索引。我想查詢數據庫,它將返回最顯示的名稱。 我一直在使用'SELECT TOP(1)name,COUNT(*)FROM names_table GROUP BY name' 但是它並沒有完全解決。由於我在MS-SQL Management Studio中試過查詢,並且它沒有返回正確的值,就好像它以字母升序的方式返回它們(如果我寫10而不是1)。所以我應該得到的最高發生價值實際上並不是最高的,只是按升序排列。 – Alternatex 2012-04-12 01:12:12