博客 Oracle的count()函数

Oracle的count()函数

   数栈君   发表于 2023-08-21 10:17  1317  0

在Oracle数据库中,count函数用于计算某个列或表达式的行数。它可以用于SELECT语句中的SELECT列表、WHERE子句、HAVING子句和ORDER BY子句。

一、各子句的count使用

1、SELECT列表中使用count

在SELECT语句的SELECT列表中,可以使用count函数来统计某个列或表达式的行数。例如,下面的SQL语句将返回employees表中的员工数:

SELECT count(*)
FROM employees;

2、WHERE子句中使用count

在SELECT语句的WHERE子句中,可以使用count函数来过滤行数满足某个条件的记录。例如,下面的SQL语句将返回employees表中工资大于等于5000的员工数:

SELECT count(*)
FROM employees
WHERE salary >= 5000;

3、HAVING子句中使用count

在SELECT语句的HAVING子句中,可以使用count函数来统计分组后的行数,并过滤出满足某个条件的记录。HAVING子句用于过滤分组后的结果集。当count函数出现在HAVING子句后面时,它用于计算分组后的行数,以便对结果集进行过滤。例如,下面的SQL语句将返回所有部门中员工数大于等于5的部门:

SELECT department, count(*)
FROM employees
GROUP BY department
HAVING count(*) >= 5;
count(*)用于计算每个部门的员工数,而HAVING子句用于过滤出员工数大于等于5的部门。

4、ORDER BY子句中使用count

在SELECT语句的ORDER BY子句中,可以使用count函数来按照某个列或表达式的行数对结果集进行排序。例如,下面的SQL语句将返回employees表中按照工资升序排序的员工数:

SELECT count(*)
FROM employees
ORDER BY salary ASC;
总结一下哈,其实count函数在SELECT语句中的实际用法包括:统计行数、过滤行数、分组统计行数并过滤、按照行数排序等。使用count函数可以方便地对结果集进行筛选和排序,从而满足不同的查询需求。

二、count(1)、count(*)、count(列)、count(distinct列)

count(1)、count(*)和count(列)都可以用于计算行数,但是它们的实现方式不同。

1、count(1):

表示计算结果集中每一行都有值的列数,而这个值可以是任何值,因为只是要计算行数。实际上,count(1)的执行效率比count(*)更高,因为它不需要读取表中的所有列。

例如,下面的SQL语句将返回表中所有行的行数:

SELECT count(1)
FROM table_name;

2、count(*):

表示计算结果集中所有行的行数,即统计所有行,包括NULL值,而且它会读取表中的所有列。因此,如果表中有大量的列,使用count(*)的执行效率可能会较低。

例如,下面的SQL语句将返回表中所有行的行数:

SELECT count(*)
FROM table_name;

3、count(列):

当需要统计某一列的非空数量时,应该使用count(列),例如count(id)可以统计id列中非空值的数量。--不包含NULL值

例如,下面的SQL语句将返回表中所有行的行数:

select count(comm)
from emp;

4、count(distinct列)

在Oracle中,COUNT(DISTINCT 列)用于计算某一列中不同值的数量。它会跳过重复的值,只计算不同的值。

例如,假设有一个名为employee的表,其中有一个列为department,表示员工所在的部门。要计算不同部门的数量,可以使用以下查询语句:

SELECT COUNT(DISTINCT department)
FROM employee;
这将返回employee表中不同部门的数量。

另外,COUNT(DISTINCT 列)也可以与其他函数一起使用,例如:

SELECT AVG(SALARY), COUNT(DISTINCT department)
FROM employee;
这将返回employee表中平均工资和不同部门的数量。

需要注意的是,COUNT(DISTINCT 列)可能会影响查询性能,因为它需要对列中的所有不同值进行排序和比较。因此,在使用它时需要谨慎考虑性能问题。

总结:

当只需要统计行数时,建议使用count(1),因为它的执行效率更高。

但是,在需要统计NULL值的情况下,只能使用count(*)。

总之,使用哪种count函数最终取决于具体需求和查询效率。




免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
上一篇:Flink 检查点配置
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群