Является ли предложение GROUP BY в SQL избыточным?

Каждый раз, когда мы используем агрегатную функцию в SQL ( MIN , MAX , AVG и т. Д.), Мы всегда должны GROUP BY для всех неагрегированных столбцов, например:

SELECT storeid, storename, SUM(revenue), COUNT(*)
FROM Sales 
GROUP BY storeid, storename

Это становится еще более навязчивым, когда мы используем функцию или другое вычисление в нашем операторе SELECT, так как это также необходимо скопировать в предложение GROUP BY.

SELECT (2 * (x + y)) / z + 1, MyFunction(x, y), SUM(z)
FROM AnotherTable
GROUP BY (2 * (x + y)) / z + 1, MyFunction(x, y)

Если мы когда-либо изменим оператор SELECT, мы должны не забыть внести такое же изменение в наше предложение GROUP BY.

Значит, предложение GROUP BY является избыточным?

  • Если это действительно так, то почему в SQL вообще есть предложение GROUP BY?
  • Если это не так, то какие дополнительные функции делают GROUP BY дает нам?
12
задан Mike Chamberlain 29 February 2012 в 14:55
поделиться