从我的表中的两列,我想得到这些列中的值的统一计数.
例如,两列是:
例如,两列是:
表:报告
- | type | place |
- -----------------------------------------
- | one | home |
- | two | school |
- | three | work |
- | four | cafe |
- | five | friends |
- | six | mall |
- | one | work |
- | one | work |
- | three | work |
- | two | cafe |
- | five | cafe |
- | one | home |
如果我做:
SELECT类型,count(*)从报表
按类型分组
我得到:
- | type | count |
- -----------------------------
- | one | 4 |
- | two | 2 |
- | three | 2 |
- | four | 1 |
- | five | 2 |
- | six | 1 |
我试图得到这样的东西:(一个最右边的列,我的类型分组在一起,多个列与每个地方的计数值)
我得到:
- | type | home | school | work | cafe | friends | mall |
- -----------------------------------------------------------------------------------------
- | one | 2 | | 2 | | | |
- | two | | 1 | | 1 | | |
- | three | | | 2 | | | |
- | four | | | | 1 | | |
- | five | | | | 1 | 1 | |
- | six | | | | | | 1 |
这将是像这样运行像上面一样的计数的结果:
- SELECT type,count(*) from reports where place = 'home'
- group by type
- SELECT type,count(*) from reports where place = 'school'
- group by type
- SELECT type,count(*) from reports where place = 'work'
- group by type
- SELECT type,count(*) from reports where place = 'cafe'
- group by type
- SELECT type,count(*) from reports where place = 'friends'
- group by type
- SELECT type,count(*) from reports where place = 'mall'
- group by type
这是否可能与postgresql?
提前致谢.
你可以在这种情况下使用案例 –
- SELECT type,sum(case when place = 'home' then 1 else 0 end) as Home,sum(case when place = 'school' then 1 else 0 end) as school,sum(case when place = 'work' then 1 else 0 end) as work,sum(case when place = 'cafe' then 1 else 0 end) as cafe,sum(case when place = 'friends' then 1 else 0 end) as friends,sum(case when place = 'mall' then 1 else 0 end) as mall
- from reports
- group by type
应该解决你的问题