Oracle的count()函数

目录

一、各子句的count使用

1、SELECT列表中使用count

2、WHERE子句中使用count

3、HAVING子句中使用count

4、ORDER BY子句中使用count

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

1、count(1):

2、count(*):

3、count(列):

4、count(distinct 列)


在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函数最终取决于具体需求和查询效率。

Oracle数据库中的count函数用于统计指定列或表中的行数。它可以返回符合指定条件的记录数,也可以统计某个列的不重复值的数量。在查询中,可以使用count函数来获取结果集的行数,或者统计某个列中非空值的数量。 例如,可以使用以下语句来统计表中满足某个条件的记录数: SELECT COUNT(*) FROM table_name WHERE condition; 其中,table_name是要统计的表名,condition是过滤条件。如果不需要过滤条件,可以省略WHERE子句。count函数还可以结合其他函数和操作符一起使用,以便进行更复杂的统计操作。 例如,可以使用以下语句来统计某个列的非空值的数量: SELECT COUNT(column_name) FROM table_name; 其中,column_name是要统计的列名。如果某个列中包含null值,并且不希望将null值计入统计结果,可以使用nvl函数将null值替换为其他值,然后再进行统计。 总之,count函数Oracle数据库中被广泛用于统计行数和计算某个列的非空值数量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [[Oracle数据库详解]](https://blog.csdn.net/qq_46824955/article/details/126957866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [oracle数据库常用分析函数与聚合函数的用法](https://blog.csdn.net/weixin_39773447/article/details/113215713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树贤森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值