我有一個數據集詢問客戶他們有多少寵物,例如。有沒有一種方法,我可以計算不同的值(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