基于另一列重复的行总结

时间:2014-02-08 12:36:49

标签: sql sql-server

  

我不知道为什么我的上一个话题被标记了!!! ???

     

这就是我所做的一切。我想不出别的什么。

enter image description here

  

我已经完成了很多事情,在我的问题部分中说明了这一点。为了简化,我做了名字A,B,C,...... 我不给你我的家庭作业。

我的问题:

enter image description here

2 个答案:

答案 0 :(得分:1)

这是一个用于解决问题的SqlServer 2008的SQL。

with data as (select name, count(*) as occurrence, sum(value) as sumvalue from mytab group by name)
select * from data where
  occurrence=(select max(occurrence) from data)
  and sumvalue=(select max(sumvalue) from data data2 where data2.occurrence=data.occurrence)

数据中收集所需的值(总和和计数)。现在我们选择具有最大值的行并过滤掉具有最大值的行。

http://sqlfiddle.com/#!3/56b00/4

答案 1 :(得分:0)

SELECT [Name], [Value]
FROM (
    SELECT *, RANK() OVER(ORDER BY [Count] DESC, Value DESC) [rn]
    FROM (
        SELECT [Name], SUM(Value) [Value], COUNT(1) [Count]
        FROM MyTable
        GROUP BY Name
    ) t
) t
WHERE rn = 1

SQL Fiddle

或更简单

SELECT TOP 1 WITH TIES [Name], [Value]
FROM (
    SELECT [Name], SUM(Value) [Value], COUNT(1) [Count]
    FROM MyTable
    GROUP BY Name
) t
ORDER BY [Count] DESC, Value DESC

SQL Fiddle