SQL where子句对表输出w.r.t字节的影响?
我将sql查询作为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)
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