MySQL:计算列中不同字段的值

时间:2013-01-17 20:25:00

标签: mysql

我需要统计城市专栏中的每一种独特动物。

这是我正在尝试的查询:
SELECT city, animals, COUNT(animals) AS count_animals FROM city_animals GROUP BY city

这显然不起作用,它给出的结果就像......

City           Animals  count_animals
---------       ---     --
Arlington       Cow     1
Austin          Cat     2
Bastrop         Cow     2
Big Sandy       Horse   2
Cedar Creek     Horse   2
Cedar Hill      Cow     2
Chandler        Horse   1
Decatur         Dog     1

我正在寻找类似的东西:

City           Animals  count_animals
---------       ---     --
Arlington       Cow     1
Austin          Cat     2
Bastrop         Cow     2
Big Sandy       Horse   2
*Cedar Creek    Horse   1*
*Cedar Creek    Lizard  1*
*Cedar Hill     Cow     1*
*Cedar Hill     Horse   1*
Chandler        Horse   1
Decatur         Dog     1

以下是我所修改过的数据:

City            Animals
-----           --------
Arlington       Cow
Austin          Cat
Austin          Cat
Bastrop         Cow
Bastrop         Cow
Big Sandy       Horse
Big Sandy       Horse
Cedar Creek     Horse
Cedar Creek     Lizard
Cedar Hill      Cow
Cedar Hill      Horse
Chandler        Horse
Decatur         Dog
DeSoto          Cow
DeSoto          Horse
DeSoto          Cow
Duncanville     Llama
Duncanville     Cow
Farmers Branch  Cat
Farmers Branch  Dog
Garland         Lizard
Garland         Cow
Garland         Cow
Garland         Lizard
Garland         Cow
georgetown      Llama
Gladewater      Horse
Hurst           Horse
Kempv           Llama
Mckinney        Dog
Mckinney        Dog
Mckinney        Dog
Midlothian      Horse
Midlothian      Horse
Ovilla          Horse
Ovilla          Horse
Palestine       Horse
Palestine       Horse
Porter          Horse
Porter          Cow
Rockwall        Cow
SPRING          Dog
SPRING          Dog
Terrell         Cow

1 个答案:

答案 0 :(得分:3)

如果您想要计算每个animal的数量,那么您需要GROUP BY城市和动物:

SELECT city, 
  animals, 
  COUNT(animals) AS count_animals 
FROM city_animals 
GROUP BY city, animals

请参阅SQL Fiddle with Demo

结果:

|           CITY | ANIMALS | COUNT_ANIMALS |
--------------------------------------------
|      Arlington |     Cow |             1 |
|         Austin |     Cat |             2 |
|        Bastrop |     Cow |             2 |
|      Big Sandy |   Horse |             2 |
|    Cedar Creek |   Horse |             1 |
|    Cedar Creek |  Lizard |             1 |
|     Cedar Hill |     Cow |             1 |
|     Cedar Hill |   Horse |             1 |
|       Chandler |   Horse |             1 |
|        Decatur |     Dog |             1 |