Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить SQL запрос / 7 сообщений из 7, страница 1 из 1
06.07.2014, 12:55:47
    #38688832
stivo32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
Помогите новичку.Есть заполненная таблица расходов Expenses с полями paydate(дата платежа) и value(сумма платежа)
Задание гласит: Вывести наибольший платеж за тот день, когда сумма платежей была наибольшей. Есть некоторое недопонимание принципов использования групповых функций((

Код: plsql
1.
SELECT paydate,sum(value) sum_val FROM expenses GROUP BY paydate;

- этот подзапрос выводит таблицу с суммой платежей по каждой дате. Тут все красиво.

Код: plsql
1.
SELECT paydate,max(sum_val) FROM (SELECT paydate,sum(value) sum_val FROM expenses GROUP BY paydate) tab_sum;


Тут на основе прошлого подзапроса я пытаюсь вывести пару дата - максимальное значение. Максимальное значение выводится, но естественно дата ставится к нему первая по списку.
Код: plsql
1.
SELECT max(value) FROM expenses WHERE paydate=(SELECT paydate FROM (SELECT paydate,sum(value) sum_val FROM expenses GROUP BY paydate) tab_sum WHERE sum_val=max(sum_val));


Итог должен быть примерно таким, за исключением того, что использование функции MAX в конце запроса выводит ошибку.
...
Рейтинг: 0 / 0
06.07.2014, 16:45:12
    #38688875
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
А где ты получаешь список дат, в которые сумма платежей максимальна, а?
...
Рейтинг: 0 / 0
06.07.2014, 17:05:14
    #38688879
stivo32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
Так вот в этом почти и весь вопрос)
Код: plsql
1.
SELECT paydate,max(sum_val) FROM (SELECT paydate,sum(value) sum_val FROM expenses GROUP BY paydate) tab_sum;


в моем понимании запрос должен делать что-то подобное. то есть он выводит таблицу вида Дата-максимальный платеж. Просто надо его поправить так, чтобы даты он выводил в соответствии с max(sum_val)
...
Рейтинг: 0 / 0
06.07.2014, 17:10:10
    #38688880
stivo32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
stivo32в моем понимании запрос должен делать что-то подобное. то есть он выводит таблицу вида Дата-максимальный платеж.
Прошу прощения. имелось ввиду Дата-максимальная сумма платежей в этот день
...
Рейтинг: 0 / 0
06.07.2014, 19:24:06
    #38688922
chromeilya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
Ты почти у цели =)
where не так просто пишется =)

вот мой =)
select paydate, raz.maks from(select paydate, sum(value) as summ, max(value) as maks from expenses group by paydate) raz where raz.summ=(select max(summ) from (select sum(value) as summ from expenses group by paydate) tor );


Посмотрим что скажет Смалюк =)
...
Рейтинг: 0 / 0
07.07.2014, 09:56:18
    #38689117
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
Фигня.

Напиши первый запрос - который получает ТОЛЬКО максимальную сумму за день. По всей таблице. Без самого дня.
Напиши второй запрос, получающий дни, когда сумма максимальна - при этом первый используется как подзапрос в критерии постгруппового отбора.
Затем напиши третий запрос, получающий максимальную сумму одного платежа - при этом второй запрос используется как подзапрос в критерии отбора.
И, наконец, четвёртый запрос отбирает нужные записи, используя второй и третий запросы в секции отбора.
...
Рейтинг: 0 / 0
07.07.2014, 09:57:13
    #38689120
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить SQL запрос
PS. Полученный монстр, конечно, неоптимален. Но, во-первых, он делает требуемое, и, во-вторых, ты будешь понимать, КАК получается нужный результат.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить SQL запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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