我有一个数据集询问客户他们有多少宠物,例如。有没有一种方法,我可以计算不同的值(1,2,3等)? 谢谢!计数不同的值
+----------+------+
| Customer | Pets |
+----------+------+
| 20 | 2 |
| 21 | 3 |
| 22 | 3 |
| 23 | 2 |
| 24 | 4 |
+----------+------+
我要的是一个列表俗话说:
- 2过2宠物
- 2有3个宠物
- 1有4个宠物
我有一个数据集询问客户他们有多少宠物,例如。有没有一种方法,我可以计算不同的值(1,2,3等)? 谢谢!计数不同的值
+----------+------+
| Customer | Pets |
+----------+------+
| 20 | 2 |
| 21 | 3 |
| 22 | 3 |
| 23 | 2 |
| 24 | 4 |
+----------+------+
我要的是一个列表俗话说:
你可以做不同的计算如下:
SELECT COUNT(DISTINCT column_name) FROM table_name;
编辑:
在您澄清并更新问题后,我现在看到它是一个完全不同于我们原先想象的问题。 “DISTINCT”在SQL中有特殊含义。如果我理解正确的话,你想是这样的:
现在,你可能会想要使用子查询:
select COUNT(*) column_name FROM (SELECT DISTINCT column_name);
让我知道如果这不是你想要的。
好吧,我删除了我之前的回答,因为最终这不是威尔兰福德正在寻找的东西,但是我说我的观点可能是我们都误解了这个问题。
我最初也想到了SELECT DISTINCT...
的事情,但是对我来说这似乎太奇怪了,以至于有人需要知道有多少人拥有与其他人不同数量的宠物......这就是为什么我认为这个问题可能是不够清楚。
因此,现在真正的问题含义已经阐明,为此制定了一个子查询其相当的开销,我最好使用GROUP BY
子句。
想象一下,你有表customer_pets
这样的:
+-----------------------+
| customer | pets |
+------------+----------+
| customer1 | 2 |
| customer2 | 3 |
| customer3 | 2 |
| customer4 | 2 |
| customer5 | 3 |
| customer6 | 4 |
+------------+----------+
然后
SELECT count(customer) AS num_customers, pets FROM customer_pets GROUP BY pets
将返回:
+----------------------------+
| num_customers | pets |
+-----------------+----------+
| 3 | 2 |
| 2 | 3 |
| 1 | 4 |
+-----------------+----------+
,因为你需要。
我曾尝试过,没有运气。这里是我的数据的一个例子; 客户|宠物 20 | 2 21 | 3 22 | 3 23 | 2 24 | 4 我想要的是一个列表说: 2有2宠物 2有3宠物 1有4宠物 – willlangford 2011-01-14 22:32:06
作出子查询?我认为它对于如此简单的任务来说开销过大... – maid450 2011-01-18 19:31:35