在SQL中使用Where子句进行分组

时间:2016-12-07 06:45:22

标签: sql-server

DateTime中使用groupby列时,我的结果有所不同。有人可以解释原因吗?

查询:

Select Name, Source, Description, CreatedDate
   From testTable
   Where Source like '%Validating err%' 
   And CreatedDate >='2016-12-01'
   Group By Name , Source, Description, CreatedDate 

结果: 15行

以上查询返回了15个结果。但是当我从CreatedDate子句中删除groupby列时,它只返回4个结果。

查询:

Select Name, Source, Description
   From testTable
   Where Source like '%Validating err%' 
   And CreatedDate >='2016-12-01'
   Group By Name , Source, Description

结果: 4行

1 个答案:

答案 0 :(得分:4)

我正在为@John的利益添加这个答案,这样他就可以直观地理解为什么他的两个结果集有不同的记录数。

想象一下名为shirts的表格,其中只有两列sizecolor。以下是一些示例数据:

size | color
S    | red
S    | green
S    | blue
M    | red
M    | green
M    | blue
L    | red
L    | green
L    | blue

换句话说,有三种尺寸的衬衫,每种尺码都有三种颜色。

现在,如果您执行以下查询:

SELECT size
FROM shirts
GROUP BY size

您将获得三条记录,仅包含三种尺寸。但是,如果您执行以下操作:

SELECT size, color
FROM shirts
GROUP BY size, color

然后你会得到 9个记录或组。这里发生的一切都是添加另一列创建了新的可能组组合,因此创建了更多组。同样的概念适用于您在两个查询中看到的内容。