MYSQL使用 COUNT 和 DISTINCT 计算表格中不同值的数量
1. SQL语句查询示例
可以使用 DISTINCT 关键字和 COUNT 函数结合起来。具体来说,可以使用以下SQL语句:
# SQL语句示例
SELECT COUNT(DISTINCT column_name) FROM table_name
- SELECT关键字用于指定要选择哪些列。
- COUNT()函数用于计算指定列的行数。
- DISTINCT关键字用于指示只计算唯一值,即去重计数。
- column_name是要计数的列名。
- table_name是要查询的表格名。
2. 应用场景举例
举个例子,我们以一个在线商店的订单表为例。假设这个订单表名为 orders,包含以下字段:
- order_id:订单编号,自增长整数类型。
- customer_id:客户编号,整数类型。
- order_date:订单日期,日期时间类型。
- ship_date:发货日期,日期时间类型。
- product_id:产品编号,整数类型。
- quantity:产品数量,整数类型。
- price:产品单价,浮点数类型。
通过查询 orders 表格,可以获取订单信息,包括订单编号、客户编号、订单日期、发货日期、产品编号、产品数量和产品单价等。
现在我们想要计算表格orders中不同客户的数量,可以使用上面SQL示例代入查询,如下:
# SQL获取orders表中不同客户的数量
SELECT COUNT(DISTINCT customer_id) FROM orders;
这条语句将返回一个数字,表示表格orders中不同客户的数量,即 customer_id 列中唯一值的数量。
场景1:
假设表格orders的内容如下:
order_id customer_id product_id 1 A 101 2 A 102 3 A 103 4 B 101 5 B 104 6 C 102 假设我们现在要获取表格orders中不同客户的数量,可以运行以下SQL查询语句:
SELECT COUNT(DISTINCT customer_id) FROM orders;
则返回结果 3 ,表示表格 orders 中不同客户的数量为 3
- 场景2:
假设我们现在要获取表格orders中不同客户订购的不同产品的数量,
可以使用以下 SQL 查询语句:
SELECT customer_id, COUNT(DISTINCT product_id)
FROM orders
GROUP BY customer_id;
则将返回以下结果:
customer_id count(distinct product_id) A 3 B 2 C 1 其中,第一列是 customer_id,第二列是每个客户订购的不同产品数量。GROUP BY 语句将结果按照 customer_id 进行分组,COUNT(DISTINCT product_id) 函数计算每个客户不同的产品数量。因此,A 客户订购了 3 种不同的产品,B 客户订购了 2 种不同的产品,C 客户订购了 1 种不同的产品。