powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Изучаю основы SQL, не могу правильно составить запрос.
11 сообщений из 11, страница 1 из 1
Изучаю основы SQL, не могу правильно составить запрос.
    #39816090
DIFFERENTIAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые знатоки)
Суть вопроса такова - по видео из 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
Изучаю основы SQL, не могу правильно составить запрос.
    #39816093
Alexander Titkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIFFERENTIAL,

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

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

Спасибо! Помогло)
...
Рейтинг: 0 / 0
Изучаю основы SQL, не могу правильно составить запрос.
    #39816102
DIFFERENTIAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Изучаю основы SQL, не могу правильно составить запрос.
    #39816124
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы читали, что такое группировка и как она работает?
...
Рейтинг: 0 / 0
Изучаю основы SQL, не могу правильно составить запрос.
    #39816250
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Изучаю основы SQL, не могу правильно составить запрос.
    #39817072
DIFFERENTIAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex-ls,

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

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

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

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

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

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


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