单独'GROUP BY`

时间:2015-07-15 17:48:37

标签: sql group-by

在我的一些SQL代码中,有一个简单的部分:

(SELECT
      t1.col1,
      ...,
      t1.coln
   FROM
      (SELECT
            t2.col1, ..., t2.coln
         FROM
            t2location
      ) t1

   GROUP BY
         t1.col1,
         ...,
         t1.coln
) t0

在那里我想“哇这个GROUP BY在这做什么,它只对它进行排序”。所以我删除了它,但随后它彻底改变了结果表。

此表t0随后与另一个具有相似组的表外连接(数据较少,但列数相同)。

我的问题是:

  

改变数据的GROUP BY做了什么?

数据集非常大,我无法确切地指出代码的确切情况。

2 个答案:

答案 0 :(得分:2)

您似乎对GROUP BYORDER BY感到困惑。 GROUP BY聚合您的数据,因此通常与汇总函数(如SUM或AVERAGE)一起使用。 GROUP BY通过选择特定列中的disctict值并将它们分组在一起来工作。虽然GROUP BY可能确实对数据进行排序,但不能保证。 ORDER BY用于排序。

答案 1 :(得分:2)

基本SELECT DISTINCT t1.col, ..., t1.coln

例如:

  col1   |  col2  |  col3
---------|--------|------
  some   | thing  | cool
  some   | thing  | cool
  some   | thing  | cool
  some   | thing  | else
   wow   | thats  | cool

没有GROUP BY的查询将返回五行。 使用 GROUP BY会返回三行:看起来像第1行,第4行和第5行