当我们使用SQL进行分组时,可以使用GROUP BY来实现:
select product_id,sum(amt)
from a_fin_factline
group by 1
程序意图很明显:按产品汇总销售额。
当我们需要对分组进行限制时,如剔除掉产品为null的组,可以通过两种方式来实现:
select product_id,sum(amt)
from a_fin_factline
group by 1
having product_id is not null;
select product_id,sum(amt)
from a_fin_factline
where product_id is not null
group by 1;
mysql中的执行时间对比:
select product_id,sum(amt)
from a_fin_factline
group by 1
having product_id is not null;
受影响的行: 0
时间: 1.086s
select product_id,sum(amt)
from a_fin_factline
where product_id is not null
group by 1;
受影响的行: 0
时间: 0.098s
可以看到使用WHERE时效率更高。
两种方式差异总结如下:
- 语法上:WHERE在GROU BY之前,HAVING在之后
- 执行计划:WHERE使得限制发生在分组之前,HAVING是在分组之后
- 效率上:使用WHERE使得目标结果集更小,分组汇总的效率高;使用HAVING时,结果集不变,WHERE效率更高
- 其他:WHERE可以使用表中的任意字段进行限制,而HAVING必须是SELECT后面的字段
分享到:
相关推荐
在Oracle数据库中,`WHERE`子句和`HAVING`子句都是用于限制查询结果的条件,但它们在使用场景和功能上有显著的区别。 首先,`WHERE`子句主要用于筛选单个行的数据,它不能与`GROUP BY`子句一起出现在查询的同一层次...
本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle数据库系统迁移至SQL Server平台的用户来说,这些知识尤...
它支持各种条件表达式,如WHERE子句用于筛选满足特定条件的记录,ORDER BY用于排序结果,GROUP BY和HAVING则用于数据分组和聚合运算。JOIN操作是SQL中的另一关键概念,它允许我们合并来自多个表的数据,如INNER JOIN...
DQL是SQL中最常用的,用于查询数据,SELECT语句是其核心,可以配合WHERE、GROUP BY、HAVING等子句进行复杂的数据筛选和聚合。DCL则涉及到权限管理,如GRANT和REVOKE用于赋予或撤销用户的数据库访问权限。 SQL语言...
在SQL语法大全实例文档中,你会了解到如何编写基础的SELECT语句来查询数据,如何使用WHERE子句进行条件筛选,以及如何通过GROUP BY和HAVING子句进行数据分组和过滤。 其次,SQL语句的良好编写方法文档则强调了代码...
3. **查询技巧**:深入理解JOIN(联接操作)、WHERE子句(筛选数据)、GROUP BY(分组数据)、HAVING(过滤分组结果)、ORDER BY(排序数据)等,以及聚合函数如COUNT、SUM、AVG、MIN和MAX。 4. **索引**:了解索引...
子查询是嵌套在其他SQL语句内部的查询,它们可以出现在SELECT、FROM、WHERE和HAVING子句中。嵌套查询则是指一个查询语句的WHERE子句中又包含另一个查询语句的情况。 在不同的数据库系统中,虽然SQL的基础语法相似,...
此外,还要学习如何使用WHERE子句进行条件筛选,GROUP BY和HAVING子句进行数据分组,以及JOIN操作来合并多个表的数据。 DBMS,即Database Management System,数据库管理系统,是用于创建、维护和管理数据库的软件...
JPQL与SQL的异同 尽管JPQL在语义上与SQL相似,但其目标是对象,而非关系数据。JPQL处理的是实体和它们的关系,而SQL操作的是表格和列。因此,理解两者间的转换规则对于有效使用JPQL至关重要。 总结,EJB的JPQL...
1. SQL基础:掌握SELECT语句,用于查询数据,包括WHERE、ORDER BY、GROUP BY、HAVING子句的使用。 2. DDL(Data Definition Language):学习CREATE、ALTER、DROP等语句,用于创建、修改和删除数据库对象,如表、...
本实验报告针对的是计算机科学与技术系的数据库系统及应用课程中的一个重要环节——SQL数据查询和视图的使用。通过本次实验,旨在使学生达到以下目标: 1. **熟练掌握SQL SELECT语句**:能够运用查询语句完成复杂的...
- 分组与聚合函数:GROUP BY和HAVING,COUNT、SUM、AVG、MAX、MIN等。 - 联接操作:INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN。 9. **设计模式** - 工厂模式、单例模式、观察者模式等23种设计模式的基本...
- **分组函数**:讲解如何使用聚合函数(如SUM、AVG、MAX、MIN、COUNT)对数据进行汇总分析,以及GROUP BY和HAVING子句的使用方法。 - **多表查询**:学习如何通过JOIN语句实现多张表之间的数据关联查询,包括内...
**1.3 Hive和普通关系数据库的异同** - **相同点**:都支持SQL-like的查询语言;都可以用于数据查询和分析。 - **不同点**: - **数据模型**:Hive的数据模型更接近于文件系统,而传统数据库则采用表格形式。 - *...
Q0032 Oracle的集合操作函数,如sum(),avg(),max(),min(),与select,where,grouby,having的先后顺序,使用方法 Oracle集合查询基本知识,只有进行分组的列,才可以取在集合查询SQL语句中取字段,先Group By,再Having...
【JAVA面试题】 1. 抽象类和接口的区别: ...以上是Java和SQL相关的面试知识点,涵盖面向对象、集合、异常处理、数据库操作等多个方面。这些知识点对于理解和解答Java面试问题以及进行数据库操作至关重要。
### JSP 和 Servlet 的异同 - **相同点**:两者都是基于 Java 的 Web 技术,都可以处理 HTTP 请求和响应。 - **不同点**:JSP 更侧重于页面展示,而 Servlet 更侧重于业务逻辑处理。 - **联系**:通常 JSP 会通过 `...
具体来说,Hive提供了SQL-like查询语言(HiveQL),使用户能够以类似于SQL的方式查询存储在Hadoop中的大规模数据。同时,Hive支持用户扩展自定义的Mapper和Reducer,以实现更复杂的业务需求。 **1.3 Hive与传统关系...