Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ребята, подскажите по SQL / 8 сообщений из 8, страница 1 из 1
13.12.2000, 01:39
    #32001142
Andrei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Я только второй день знаком с SQL, жена попросила срочно ей помочь, в пятницу экзамен...
Как обойти запрет вложенных агрегатных запросов? Нужно найти максимум от суммы столбца group by, что-то вроде

SELECT something1, MAX(SUM(something2))
FROM ....
GROUP BY something1

Так нельзя, а как сделать правильно?
Выручите!
...
Рейтинг: 0 / 0
13.12.2000, 08:11
    #32001144
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Чего то я не совсем понял чего надо. Пусть есть таблица:
A B
----------------
q 1
q 2
w 5
t 7
w 3
q 7

Select A, sum(A) from Table group by A даст
q 10
w 8
t 7

А Max от кого брать то надо - от этих значений что ли? И что требуется в столбце A для этого значения? Если рез. должен быть q 10, то можно так:
Select top 1 A,sum(B) from Table group by A order by sum(B) desc
...
Рейтинг: 0 / 0
13.12.2000, 08:26
    #32001145
Andrei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Спасибо, нужно было именно это!
...
Рейтинг: 0 / 0
13.12.2000, 09:10
    #32001146
Andrei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
А если максимуму в нескольких строчках (заранее неизвестно в скольких), и их надо показать?
Например, после суммирования и group by
A B
---
q 10
s 10
f 7
g 5

А результатом надо
q 10
s 10

Заранее спасибо!
...
Рейтинг: 0 / 0
13.12.2000, 11:17
    #32001148
maximF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Можно в два этапа, с использованием временной таблицы #t:

select a, sum(b) as bSum
into #t
from t
group by a

select a, bSum
from #t
where bSum=(select max(bSum) from #t)
...
Рейтинг: 0 / 0
13.12.2000, 11:45
    #32001150
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
По-моему можно и без временной таблицы:
Select A,sum(B)
from Table
group by A
having sum(B)=(Select top 1 sum(B) from Table group by A order by sum(B) desc)

Но со временными таблицами всё-же лучше
...
Рейтинг: 0 / 0
13.12.2000, 14:59
    #32001160
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Решил, вот вмешаться. Еще как разновидность подхода maximF`а , только без временной таблицы. В данном примере особой выгоды не получится, однако красива сама идея выборки из результируемого множества как из таблицы:


select a, bSum
from (select t.a, sum(t.b) as bSum
from Tab1 t
group by a) as t1
where bSum=(select max(t1.bSum) from t1)
...
Рейтинг: 0 / 0
14.12.2000, 00:15
    #32001169
Andrei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ребята, подскажите по SQL
Спасибо, выручили!
А последняя идея действительно красивая.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ребята, подскажите по SQL / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]