1

DB列:person、politicalViews、region

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

いくつかの選択を使用できますが、簡単な方法はありませんか?DISTINCT(politicalViews)やCOUNT(politicalViews、'liberal')のようなもの

4

2 に答える 2

2
SELECT region, count(distinct politicalViews),
 sum(politicalViews='liberal'), sum(politicalViews='conservative')
FROM table GROUP BY region;

共産主義者が何人いるのか知りたくありませんか?

于 2012-08-22T21:23:04.230 に答える
2

集計とを使用して、これをすべて1つのクエリで実行できます。GROUP BY

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

SQL FiddlewithDemoを参照してください

于 2012-08-22T21:26:29.323 に答える