MYSQL使用 COUNT 和 DISTINCT 计算表格中不同值的数量

1,084 阅读2分钟

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_idcustomer_idproduct_id
1A101
2A102
3A103
4B101
5B104
6C102

假设我们现在要获取表格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_idcount(distinct product_id)
A3
B2
C1

其中,第一列是 customer_id,第二列是每个客户订购的不同产品数量。GROUP BY 语句将结果按照 customer_id 进行分组,COUNT(DISTINCT product_id) 函数计算每个客户不同的产品数量。因此,A 客户订购了 3 种不同的产品,B 客户订购了 2 种不同的产品,C 客户订购了 1 种不同的产品。