我有一张表OrderUser
UserName | OrderNo
-----------------------
User1 | 1
User1 | 2
User1 | 3
User2 | 4
User2 | 5
我只需要userID
个最小行,在这种情况下需要user2
。
需要简单的T-Sql语句,因为我将在C#中使用SqlCommand
中的代码。
请帮忙。
答案 0 :(得分:2)
尝试以下代码。它的派生表(内部select
)
count(*)
按升序排序外部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;