首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中是否可以在没有GROUP子句的情况下使用子句?

在SQL中是否可以在没有GROUP子句的情况下使用子句?
EN

Stack Overflow用户
提问于 2022-09-16 06:44:01
回答 1查看 40关注 0票数 0

假设我是作为聚合函数的查询编写的,其中我想要基于表列和聚合函数的某些条件的结果。因此,是否可以使用WHERE和WHERE子句来获得预期的结果而不逐个子句。

我为上述条件编写了以下查询。

代码语言:javascript
复制
select *
from ORDER_DETAILS 
where item_price > 1000
having count(item) >= 5 ;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-16 07:24:39

首先,havingwhere一样,但是可以应用于聚合函数结果。

您应该在每个子句之后跟踪数据、、行、

如果我们命名一个row_id属性,该属性可用于定位表的一行。那么where子句不会更改row_id

当我们使用聚合函数时,它意味着输入多行并得到一个结果,这就改变了row_id.In事实-- no group by子句--意味着所有事情都会转到一个桶中,而输出结果只有一行。

我最好的猜测是,您希望获得原始数据行,这些数据行具有传递聚合值的属性,check.Eg找到了项price>1000(原始筛选器)的订单细节,以及多个单顺序项(聚合筛选器)。

因此,group + aggregate + having为您提供聚合筛选数据集,您可以将此数据集返回原始表,然后结果表具有与原始ORDER_DETAILS相同的row_id

代码语言:javascript
复制
select *
from ORDER_DETAILS 
where item_price > 1000
and order_id in (
  select order_id 
  from ORDER_DETAILS 
  group by order_id 
  having count(item) >= 5
);

注:

  • order_id是聚合过滤列示例
  • ,为了方便起见,您可以将其转换为使用大数据sql的
  • ,如hive/
  • ,还可以使用window函数获取原始表的每一行的聚合结果。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73740895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档