如何在SQL Server 2005中查找值的最低行数

时间:2014-05-09 16:28:06

标签: sql sql-server

我有一张表OrderUser

UserName   |  OrderNo
-----------------------
User1      |  1
User1      |  2
User1      |  3
User2      |  4
User2      |  5

我只需要userID个最小行,在这种情况下需要user2

需要简单的T-Sql语句,因为我将在C#中使用SqlCommand中的代码。

请帮忙。

3 个答案:

答案 0 :(得分:2)

尝试以下代码。它的派生表(内部select

  • 按用户名汇总数据
  • count(*)按升序排序
  • 然后基于该排序
  • 为每个离散频率值分配等级(1-N)

外部select只保留排名为1的行(即具有最低频率值的行),按用户名排序

select *
from ( select Rank      = rank() over ( order by count(*) ) ,
              UserName  = t.UserName ,
              Frequency = count(*)
       from dbo.OrderUser t
       group by t.UserName
     ) summary
where summary.Rank = 1
order by summary.UserName

如果多个用户共享相同的最低频率,则每个此类用户将获得1行;否则你会得到一排。

答案 1 :(得分:1)

SELECT TOP 1 UserName, COUNT(*) 
FROM myTable 
GROUP BY UserName 
ORDER BY COUNT(*) ASC

答案 2 :(得分:1)

使用sql命令COUNT来计算任何表中的总行数。在您的情况下,您还必须按要计算总数的列的名称对它们进行分组。这是一些访问db代码,希望你仍然可以阅读它。

SELECT UserName, COUNT (*) As MinMax 
FROM Table1
GROUP BY UserName;