ArtyomovAnton
@ArtyomovAnton
PHP и всё что рядом

Как в SQL Oracle группировать по трём полям, если в SELECTе нужно получить 10 полей?

Необходимо в запросе, где в SELECT выбирается 10 полей, выполнить группировку по 3 полям, что бы посчитать количество клонов записей именно по этим трем полям. Это в принципе возможно?
Я конечно понимаю, что Oracle не поймет, с какой записи ему выводить данные по полям, которые не в group by, поэтому и ругается. Например, MySQL на такое дело не обращает внимания.
  • Вопрос задан
  • 1864 просмотра
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
MySQL единственная СУБД, которая этот момент делает неправильно, и это лечится установкой sql_mode в ONLY_FULL_GROUP_BY. Оберните GROUP BY в подзапрос и недоставющие поля выбирайте внешним SELECT'ом, либо воспользуйтесь оконными функциями:
SELECT 
    name,
    lastname,
    count(*) OVER (PARTITION BY group_col1, group_col2, group_col3),
FROM table

В SQL Server такая конструкция работает, в Oracle по идее тоже должна.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы