通过更改结果中的行数,在组中包含额外的列吗?
我正在对表A(col1,col2 .... col9)进行选择查询,我首先包括
select col1,col2,col3
from A where col1 = (condition)
group by col1, col2, col3
给了我一定数量的结果。
现在我将查询更改为此
`select col1,col2,col3, col8,col9
from A where col1=(condition)
group by col1,col2,col3, col8,col9'
我在结果中得到了不同数量的行。可能的解释是什么?
答案 0 :(得分:1)
通过对这些列进行分组,实质上是在分组列上使结果不同。因此,如果存在共有第1,2,3,18和19列的行,它们将被折叠在一起。
答案 1 :(得分:1)
如果col1,col2和col3的组合不是唯一的,则可以使用这三个组合相同的多行。
如果发生这种情况,和这些重复项对col8和/或col9具有不同的值,那么按这些额外列进行分组将产生更多行。
请注意,您可以使用select distinct
获得相同的结果。如果您想要聚合其他列,例如计算总和或计数,则特别使用group by
,如下所示:
select
col1, col2, col3,
sum(col8) as total8
from A
group by col1, col2, col3
上面的查询将为您提供col1,col2和col3的每个唯一组合,以及每个组合的所有col8的总和。
答案 2 :(得分:0)
添加GROUP BY并不是真正正确的方法,而不是按照它尝试分组的一列进行分组,这样根据您查询的数据,您可能会得到更少或更多的结果
请问您为什么要对这些列进行分组?