Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Изучаю основы SQL, не могу правильно составить запрос. / 11 сообщений из 11, страница 1 из 1
22.05.2019, 00:24
    #39816090
DIFFERENTIAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
Здравствуйте уважаемые знатоки)
Суть вопроса такова - по видео из youtube сгенерил себе базу:
поля id(MK), make, model, price
и заполнены они соответственно как:
1| Ford | focus| 14000.50
2| Audi | Q7 | 30000.45
и так 1000 строк.

Такой запрос проходит
SELECT make, COUNT(model), SUM(price) FROM car GROUP BY make ORDER BY COUNT;

Но пытаюсь добавить типа такого:
SELECT make, COUNT(model), SUM(price) FROM car WHERE SUM(price) BETWEEN '1000000' AND '5000000' GROUP BY make;
то выдает ошибку, где подсвечивается SUM(price) с текстом "aggregate functions are not allowed in WHERE"

Подскажите пожалуйста как правильно реализовать желаемое.

Спасибо.
...
Рейтинг: 0 / 0
22.05.2019, 00:35
    #39816093
Alexander Titkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
DIFFERENTIAL,

Where заменить на having и вставить после group by
...
Рейтинг: 0 / 0
22.05.2019, 00:53
    #39816097
DIFFERENTIAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
Alexander TitkinDIFFERENTIAL,

Where заменить на having и вставить после group by

Спасибо! Помогло)
...
Рейтинг: 0 / 0
22.05.2019, 01:16
    #39816102
DIFFERENTIAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
Alexander Titkin,

Другой вопрос. Вот сейчас хочу вывести список, где будут самые дешевые позиции от каждого производителя, но с колонкой model.
То-есть запрос типа:
SELECT make, MIN(price) FROM car GROUP BY make ORDER BY make;
проходит, но список имеет только две колонки - производитель и минимальная цена в его группе.
Когда пытаюсь также достать и название модели от этой цены:

SELECT make, MIN(price), model FROM car GROUP BY make ORDER BY make;

то ругается что "column "car.model" must appear in the GROUP clause or be used in an aggregate function.

Если же добавить model в блоке GROUP BY
SELECT make, MIN(price), model FROM car GROUP BY make, model ORDER BY make;

то список содержит все модели конкретного производителя с минимальной ценой. А хотелось бы иметь список, где make не повторяется и рядом с ним стоит минимальная цена из этой группы и модель, к которой эта цена привязана.
...
Рейтинг: 0 / 0
22.05.2019, 06:48
    #39816124
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
Вы читали, что такое группировка и как она работает?
...
Рейтинг: 0 / 0
22.05.2019, 10:48
    #39816250
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
DIFFERENTIALAlexander Titkin,

Другой вопрос. Вот сейчас хочу вывести список, где будут самые дешевые позиции от каждого производителя, но с колонкой model.
То-есть запрос типа:
SELECT make, MIN(price) FROM car GROUP BY make ORDER BY make;
проходит, но список имеет только две колонки - производитель и минимальная цена в его группе.
Когда пытаюсь также достать и название модели от этой цены:

SELECT make, MIN(price), model FROM car GROUP BY make ORDER BY make;

то ругается что "column "car.model" must appear in the GROUP clause or be used in an aggregate function.

Если же добавить model в блоке GROUP BY
SELECT make, MIN(price), model FROM car GROUP BY make, model ORDER BY make;

то список содержит все модели конкретного производителя с минимальной ценой. А хотелось бы иметь список, где make не повторяется и рядом с ним стоит минимальная цена из этой группы и модель, к которой эта цена привязана.

Эта задача через DISTINCT ON решается. См в документации; https://www.postgresql.org/docs/11/sql-select.html#SQL-DISTINCT
...
Рейтинг: 0 / 0
23.05.2019, 13:33
    #39817072
DIFFERENTIAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
alex-ls,

Честно говоря нет. пытаюсь как моно скорее постигнуть азы.
...
Рейтинг: 0 / 0
23.05.2019, 13:33
    #39817073
DIFFERENTIAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
Maxim Boguk,

Спасибо! Посмотрю.
...
Рейтинг: 0 / 0
24.05.2019, 07:37
    #39817445
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
DIFFERENTIALalex-ls,

Честно говоря нет. пытаюсь как моно скорее постигнуть азы.
чтобы постигнуть азы, нужно сначала прочитать теорию, тогда Вы бы все сами поняли
...
Рейтинг: 0 / 0
24.05.2019, 10:53
    #39817577
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
DIFFERENTIALalex-ls,

Честно говоря нет. пытаюсь как моно скорее постигнуть азы.

Это практично! читать документацию и понимать о чем речь - себя не уважать, гораздо быстрее вопрос-ответ(!), так "моно скорее постигнуть азы"
...
Рейтинг: 0 / 0
28.05.2019, 14:32
    #39819320
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изучаю основы SQL, не могу правильно составить запрос.
DIFFERENTIAL,

Очень советую - лучший ресурс для постижения азов SQL - sql-ex.ru
70% работников не умеют решить все с обучающего этапа :)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Изучаю основы SQL, не могу правильно составить запрос. / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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