SQL where子句对表输出w.r.t字节的影响?

SQL where子句对表输出w.r.t字节的影响?,sql,syntax,Sql,Syntax,我将sql查询作为 select sourceIP, sum(sourceBytes) from flows group by sourceIP order by sum(sourceBytes) desc 这将产生以下结果(虚拟):- 现在,如果我将查询更改为 select sourceIP, sum(sourceBytes) from flows group where sourceBytes > 50 by sourceIP order by sum(sourceBytes)

我将sql查询作为

select sourceIP, sum(sourceBytes) 
from flows group by sourceIP
order by sum(sourceBytes) desc
这将产生以下结果(虚拟):-

现在,如果我将查询更改为

select sourceIP, sum(sourceBytes) 
from flows group where sourceBytes > 50 by sourceIP
order by sum(sourceBytes) desc
输出为

 sourceIp        SourceBytes
 192.168.1.2     150
 192.168.1.3     40
我现在没有访问DB的权限,我无法提取/显示实际的表值,但是这里我想用
greater
then语句指出的一点是输出发生了变化。我认为第二次查询我只想处理结果,而不是将所有当前的值
flows
表处理为更大范围的值,即50。我想知道这两个查询的级别不同。谢谢。

我想你在找。。。i、 例如,您希望筛选已分组的总计,以仅查看累积SourceBytes总计超过50的总计。您正在使用WHERE子句来执行此操作,其结果是只考虑单个行上的SourceBytes值超过50的值

这是因为WHERE子句应用于源表的行级别,而HAVING子句应用于GROUP BY/AGGRATE语句产生的结果

在这种情况下,您可能正在寻找(不记得IBM语法是否与SQL不同):

我想你在找。。。i、 例如,您希望筛选已分组的总计,以仅查看累积SourceBytes总计超过50的总计。您正在使用WHERE子句来执行此操作,其结果是只考虑单个行上的SourceBytes值超过50的值

这是因为WHERE子句应用于源表的行级别,而HAVING子句应用于GROUP BY/AGGRATE语句产生的结果

在这种情况下,您可能正在寻找(不记得IBM语法是否与SQL不同):

我想你在找。。。i、 例如,您希望筛选已分组的总计,以仅查看累积SourceBytes总计超过50的总计。您正在使用WHERE子句来执行此操作,其结果是只考虑单个行上的SourceBytes值超过50的值

这是因为WHERE子句应用于源表的行级别,而HAVING子句应用于GROUP BY/AGGRATE语句产生的结果

在这种情况下,您可能正在寻找(不记得IBM语法是否与SQL不同):

我想你在找。。。i、 例如,您希望筛选已分组的总计,以仅查看累积SourceBytes总计超过50的总计。您正在使用WHERE子句来执行此操作,其结果是只考虑单个行上的SourceBytes值超过50的值

这是因为WHERE子句应用于源表的行级别,而HAVING子句应用于GROUP BY/AGGRATE语句产生的结果

在这种情况下,您可能正在寻找(不记得IBM语法是否与SQL不同):


这是什么?MySQL、SqlServer、Oracle?@Siyual你不明白什么?假设我认为你想要HAVING子句是对的,那么你的示例数据就全错了。。。您的问题是,您希望保留在结果集中的值是相同的,但它们发生了更改,因为您使用WHERE子句在细节级别进行筛选,而不是使用HAVING语句在聚合级别进行筛选。这是什么DB?MySQL、SqlServer、Oracle?@Siyual你不明白什么?假设我认为你想要HAVING子句是对的,那么你的示例数据就全错了。。。您的问题是,您希望保留在结果集中的值是相同的,但它们发生了更改,因为您使用WHERE子句在细节级别进行筛选,而不是使用HAVING语句在聚合级别进行筛选。这是什么DB?MySQL、SqlServer、Oracle?@Siyual你不明白什么?假设我认为你想要HAVING子句是对的,那么你的示例数据就全错了。。。您的问题是,您希望保留在结果集中的值是相同的,但它们发生了更改,因为您使用WHERE子句在细节级别进行筛选,而不是使用HAVING语句在聚合级别进行筛选。这是什么DB?MySQL、SqlServer、Oracle?@Siyual你不明白什么?假设我认为你想要HAVING子句是对的,那么你的示例数据就全错了。。。您的问题是,您希望保留在结果集中的值是相同的,但它们发生了更改,因为您使用WHERE子句在细节级别进行筛选,而不是使用HAVING语句在聚合级别进行筛选。
 sourceIp        SourceBytes
 192.168.1.2     150
 192.168.1.3     40
select sourceIP, sum(sourceBytes) TotalBytes
from flows 
group by sourceIP
having sum(SourceBytes) > 50
order by sum(sourceBytes) desc