2014-02-08 4 views
0

Я не знаю, почему была отмечена моя предыдущая тема !!! ???Объяснение строк на основе повторения другой колонки

Это то, что я доделал до сих пор. Я не могу думать ни о чем другом.

enter image description here

так много вещей, которые я сделал, чтобы добраться до этой точки, которая проиллюстрирована в Моего раздела Проблемы. Который для упрощения я произвел имя A, B, C, .... Я не даю вам мою домашнюю работу.

Моя проблема:

enter image description here

+1

К сожалению, я не могу скопировать текст запроса! :( –

+0

Этот запрос предназначен только для людей, которые говорят, что это моя домашняя работа. Забудьте об этом. Моя проблема начинается с ** «Моя проблема» ** Раздел! –

ответ

1

Вот SQL для SqlServer 2008, чтобы решить вашу проблему.

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

+0

Умный ответ - помогите вам - спасибо вам очень много –

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

Смежные вопросы