2014-03-06 139 views
0

我有一個數據庫,裏面存有客戶的數據。我需要知道我們在個別城市和國家有多少客戶。我必須用單個查詢來完成。MySQL多列,單個查詢

我的表是客戶,我有列城市和國家(都是varchar),其中包含有關它的信息。

所需的查詢的輸出應該是這樣的:

City | NumberOfCustomers | Country | NumberOfCustomers | 
-------------------------------------------------------- 

感謝

+0

所需的輸出是怪異。不客氣 – zerkms

+0

「我必須用單個查詢來做」---這個要求背後有什麼技術原因? – zerkms

+0

@zerkms「因爲我的老師告訴過我。」 – Crontab

回答

0
select city, country, count(*) from tbl group by 1,2 with rollup 

編輯顯示示例表和查詢的輸出:

mysql> select * from location; 
+-------+---------+ 
| city | country | 
+-------+---------+ 
| City1 | US  | 
| City2 | US  | 
| City2 | US  | 
| City3 | CA  | 
| City3 | CA  | 
| City3 | JP  | 
+-------+---------+ 
6 rows in set (0.00 sec) 

mysql> select city, country, count(*) from location group by 1,2 with rollup; 
+-------+---------+----------+ 
| city | country | count(*) | 
+-------+---------+----------+ 
| City1 | US  |  1 | 
| City1 | NULL |  1 | 
| City2 | US  |  2 | 
| City2 | NULL |  2 | 
| City3 | CA  |  2 | 
| City3 | JP  |  1 | 
| City3 | NULL |  3 | 
| NULL | NULL |  6 | 
+-------+---------+----------+ 
8 rows in set (0.01 sec) 
+0

MySQL是否支持'with'? http://stackoverflow.com/questions/324935/mysql-with-clause – showdev

+0

@showdev - 我更新了一個例子,說明如何使用mysql的「with」 – atxdba

+0

@atxdba謝謝。有什麼辦法可以將它們分組嗎?像美國 - 36而不是36排美國 - 1? – nifelvind