Значение Integer в предложении GROUP BY

0

Я тестирую и пытаюсь понять и настроить большой запрос, написанный кем-то другим, хотел бы получить некоторую помощь со значением целого в разделе GROUP BY. Он имеет следующую структуру:

SELECT
  column1,
  column2,
  SUM(column3),
  SUM(column4),
FROM
  table1 AS a
WHERE 
  column5 <> 3
GROUP BY
  column1,
  7,
  column2;

Что делает это 7? Я не могу найти его нигде в выходе или посмотреть, какой эффект он получил.

Показать ещё 1 комментарий
Теги:
group-by

3 ответа

2
Лучший ответ

Документация SELECT объясняет:

Столбцы, выбранные для вывода, могут быть указаны в предложениях ORDER BY и GROUP BY с использованием имен столбцов, псевдонимов столбцов или позиций столбцов.
Позиции столбцов являются целыми числами и начинаются с 1.

GROUP BY 7 в вашем запросе не является допустимой позицией столбца, потому что предложение SELECT содержит только 4 выражения.

  • 0
    Хорошо, спасибо, ну, я не знал, что это значит, только записал 4 вещи в утверждении select. Реальный запрос содержит 14 вещей в операторе выбора, и я наблюдаю, если я изменю 7 на 14, он все еще работает, но 15 вызывает ошибку. ОК, столбцы, выбранные для вывода, которые могут быть не только столбцами, но, например, CONCAT(column6, column7) , а не столбцами в исходной таблице, но выбраны для вывода
  • 1
    Это потому, что в предложении SELECT нет «15-го столбца».
2

Когда любое целое значение используется для Group by, это означает группировку по 7-му столбцу. То же самое можно сделать с помощью ORDER BY

Я предположил, что вы предоставили код для образца в своем фактическом коде, у вас должно быть 7 или более 7 столбцов в предложении SELECT

0

Целочисленные значения, используемые в GROUP BY и ORDER BY - это позиция столбцов, начинающихся с 1 (система подсчета числа изредка);

Вы можете посмотреть больше об этом на официальной документации здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню