Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表中不同名称的最小值的SQL Server查询计数_Sql_Sql Server_Count - Fatal编程技术网

表中不同名称的最小值的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谢谢,现在有意义了。我应该多睡一会儿。。。。