如何为不同类型的列编写单个查询

时间:2013-01-29 12:46:23

标签: mysql sql

我有状态数据库,其中我有身体受到挑战的人的数据? 国家又有许多城市

有些人基于腿部问题,手部问题,盲目等等。

我只有一个州

  

people_info(cityname,type)

我需要将状态数据显示为

  

州名|总人数|腿部问题计数|手问题计数|盲目计数

同样的方式

  

城市A |总人数|腿部问题计数|手问题计数|盲目计数

     

城市B |总人数|腿部问题计数|手问题计数|盲目计数

如何为州和城市编写单一查询以打印数据

1 个答案:

答案 0 :(得分:1)

由于您没有提到您正在使用的RDBMS,这在许多(但不是所有)数据库服务器上都会有所帮助。

SELECT  cityName,
        COUNT(*) totalPeople,
        SUM(CASE WHEN type = 'legProb' THEN 1 ELSE 0 END) AS LegProbCount,
        SUM(CASE WHEN type = 'handProb' THEN 1 ELSE 0 END) AS HandProbCount,
        SUM(CASE WHEN type = 'blindProb' THEN 1 ELSE 0 END) AS blindCount
FROM    people_info
GROUP   BY cityName

MySQL中,您可以直接使用

SELECT  cityName,
        COUNT(*) totalPeople,
        SUM(type = 'legProb') AS LegProbCount,
        SUM(type = 'handProb') AS HandProbCount,
        SUM(type = 'blindProb') AS blindCount
FROM    people_info
GROUP   BY cityName