COUNT
Description of the illustration count.gif
See Also:
"Analytic Functions" for information on syntax, semantics, and restrictionsCOUNT returns the number of rows returned by the query. You can use it as an aggregate or analytic function.
If you specify DISTINCT, then you can specify only the query_partition_clause of the analytic_clause. The order_by_clause and windowing_clause are not allowed.
If you specify expr, then COUNT returns the number of rows where expr is not null. You can count either all rows, or only distinct values of expr.
If you specify the asterisk (*), then this function returns all rows, including duplicates and nulls. COUNT never returns null.
The following examples use COUNT as an aggregate function:
SELECT COUNT(*) "Total"
FROM employees;
Total
----------
107
SELECT COUNT(*) "Allstars"
FROM employees
WHERE commission_pct > 0;
Allstars
---------
35
SELECT COUNT(commission_pct) "Count"
FROM employees;
Count
----------
35
SELECT COUNT(DISTINCT manager_id) "Managers"
FROM employees;
Managers
----------
18
The following example calculates, for each employee in the employees table, the moving count of employees earning salaries in the range 50 less than through 150 greater than the employee's salary.
SELECT last_name, salary,
COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND
150 FOLLOWING) AS mov_count
FROM employees
ORDER BY salary, last_name;
LAST_NAME SALARY MOV_COUNT
------------------------- ---------- ----------
Olson 2100 3
Markle 2200 2
Philtanker 2200 2
Gee 2400 8
Landry 2400 8
Colmenares 2500 10
Marlow 2500 10
Patel 2500 10
SQL> select comm from emp;
COMM
----------
300
500
1400
0
COMM
----------
14 rows selected.
SQL> select distinct comm from emp;
COMM
----------
1400
500
300
0
5 rows selected.
SQL> select comm from emp;
COMM
----------
300
500
1400
0
COMM
----------
14 rows selected.
SQL> select distinct comm from emp;
COMM
----------
1400
500
300
0
5 rows selected.
SQL> select count(comm) from emp where comm is not null;
COUNT(COMM)
-----------
4
1 row selected.
SQL> select count(comm) from emp where comm is null;
COUNT(COMM)
-----------
0
1 row selected.
总结:count(*)结果包含NULL行,count(某一列)不包含空行。

本文深入探讨了SQL中COUNT函数的用法,包括作为聚合函数和分析函数的应用,提供了多个示例,详细解释了其返回值、语法、参数及注意事项。
7804

被折叠的 条评论
为什么被折叠?



