Mysql 计算不同的值

Mysql 计算不同的值,mysql,Mysql,DB列:个人、政治观点、地区 DB示例: person1 liberal Lviv person2 communistic Donetsk person3 liberal Lviv person4 conservative Kyiv person5 conservative Odesa person6 conservative Lviv person7 communistic Kyiv 预期栏目:地区、该地区公民不同政治观点的数量、该地区自由派的数量、该地

DB列:个人、政治观点、地区

DB示例:

person1  liberal      Lviv
person2  communistic  Donetsk
person3  liberal      Lviv
person4  conservative Kyiv
person5  conservative Odesa
person6  conservative Lviv
person7  communistic  Kyiv
预期栏目:地区、该地区公民不同政治观点的数量、该地区自由派的数量、该地区保守派的数量。 预期结果:

Lviv    2  2  1
Kyiv    2  0  1
Donetsk 1  0  0
Odesa   1  0  1
很明显,它看起来是这样的:

SELECT region, ?????? FROM table GROUP BY region
我可以选择一些,但是没有简单的方法吗?类似于不同的政治观点或国家政治观点,“自由派”

SELECT region, count(distinct politicalViews),
 sum(politicalViews='liberal'), sum(politicalViews='conservative')
FROM table GROUP BY region;
你为什么不想知道有多少共产主义者


你为什么不想知道有多少共产主义者呢?

你可以在一个查询中完成这一切,使用聚合和分组查询


请参见

您可以使用聚合和分组方式在一个查询中完成这一切


是的,也谢谢你。我接受了迈克尔的答案,因为他是第一个,但也投票支持了你的答案:是的,也谢谢你。我接受了迈克尔的答案,因为他是第一个,但也投票支持了你的答案:
select region,
  COUNT(DISTINCT pol_view) DiffView,
  sum(CASE WHEN pol_view = 'liberal' THEN 1 ELSE 0 END) NumberLiberals,
  sum(CASE WHEN pol_view = 'conservative' THEN 1 ELSE 0 END) NumberConservatives
from test
group by region