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

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

Так нельзя, а как сделать правильно?
Выручите!
...
Рейтинг: 0 / 0
Ребята, подскажите по SQL
    #32001144
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего то я не совсем понял чего надо. Пусть есть таблица:
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
Ребята, подскажите по SQL
    #32001145
Andrei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, нужно было именно это!
...
Рейтинг: 0 / 0
Ребята, подскажите по SQL
    #32001146
Andrei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если максимуму в нескольких строчках (заранее неизвестно в скольких), и их надо показать?
Например, после суммирования и group by
A B
---
q 10
s 10
f 7
g 5

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

Заранее спасибо!
...
Рейтинг: 0 / 0
Ребята, подскажите по SQL
    #32001148
maximF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно в два этапа, с использованием временной таблицы #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
Ребята, подскажите по SQL
    #32001150
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему можно и без временной таблицы:
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
Ребята, подскажите по SQL
    #32001160
AnKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил, вот вмешаться. Еще как разновидность подхода 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
Ребята, подскажите по SQL
    #32001169
Andrei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, выручили!
А последняя идея действительно красивая.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ребята, подскажите по SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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