表中不同名称的最小值的SQL Server查询计数
我从一个查询中得到以下结果,我想做一个子查询,计算每个名称中最小值的数目 例如:表中不同名称的最小值的SQL Server查询计数,sql,sql-server,count,Sql,Sql Server,Count,我从一个查询中得到以下结果,我想做一个子查询,计算每个名称中最小值的数目 例如: Marcus 25 Marcus 27 Marcus 25 Jonathan 36 Jonathan 36 Jonathan 36 Jonathan 38 结果应该是: Marcus 25 2 Jonathan 36 3 有什么想法吗?一种方法使用窗口函数: select t.name, count(*) from (select t.*, rank() o
Marcus 25
Marcus 27
Marcus 25
Jonathan 36
Jonathan 36
Jonathan 36
Jonathan 38
结果应该是:
Marcus 25 2
Jonathan 36 3
有什么想法吗?一种方法使用窗口函数:
select t.name, count(*)
from (select t.*,
rank() over (partition by name order by val) as seqnum
from t
) t
where seqnum = 1;
编辑:
哦,OP也想要这个值:
select t.*
from (select t.name, t.val, count(*) as cnt,
row_number() over (partition by name order by val) as seqnum
from t
group by t.name, t.val
) t
where seqnum = 1;
马库斯3应该被认为比马库斯27大还是小?你说的马库斯3是什么意思?如果你有这样一个值,它会被认为比你现有的马库斯27大还是小?这个问题不重要,因为你已经接受了Gordon的答案,但需要考虑的是-字符串和数字有不同的排序规则。@ZoharPeled它们是两个不同的列。马库斯就是这个名字。27是价值。@MartinSmith谢谢,现在有意义了。我应该多睡一会儿。。。。