[置顶] SQL–count()函数

云计算 waitig 471℃ 百度已收录 0评论

SQL COUNT() 函数

COUNT() 函数返回匹配指定条件的行数。

count(*) count(1)实质都是统计所有记录,只是性能上有区别!!!

当要统计的数量比较大时,发现count(*)花费的时间比较多,相对来说count(1)花费的时间比较少。

了一些文档有以下的说法:


1.如果你的数据表没有主键,那么count(1)比count(*)快  

2.如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快  

3.如果你的表只有一个字段的话那count(*)就是最快的啦  

4.count(*) count(1)
两者比较。主要还是要
count(1)所相对应的数据字段。
如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 


count详解: 


count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
count(
distinct 列名),得到的结果将是除去值为null和重复数据后的结果

SQL COUNT() 语法

SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:


SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

SQL COUNT(column_name) 实例

我们拥有下列 "Orders" 表:

O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter

现在,我们希望计算客户 "Carter" 的订单数。

我们使用如下 SQL 语句:

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Carter'

以上 SQL 语句的结果是 2,因为客户 Carter 共有 2 个订单:

CustomerNilsen
2

SQL COUNT(*) 实例

如果我们省略 WHERE 子句,比如这样:

SELECT COUNT(*) AS NumberOfOrders FROM Orders

结果集类似这样:

NumberOfOrders
6

这是表中的总行数。

SQL COUNT(DISTINCT column_name) 实例

现在,我们希望计算 "Orders" 表中不同客户的数目。

我们使用如下 SQL 语句:


SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

结果集类似这样:

NumberOfCustomers
3

这是 "Orders" 表中不同客户(Bush, Carter 和 Adams)的数目。


本文由【waitig】发表在等英博客
本文固定链接:[置顶] SQL–count()函数
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)