-- 単純集計 N表SELECT
count(CASE WHEN q1_1=1THEN name ELSEnullEND) AS q1_1
,count(CASE WHEN q1_2=1THEN name ELSEnullEND) AS q1_2
,count(CASE WHEN q1_3=1THEN name ELSEnullEND) AS q1_3
,count(name) AS n
FROM answer
-- 単純集計 %表WITH src AS (
SELECT
count(CASE WHEN q1_1=1THEN name ELSEnullEND) AS q1_1
,count(CASE WHEN q1_2=1THEN name ELSEnullEND) AS q1_2
,count(CASE WHEN q1_3=1THEN name ELSEnullEND) AS q1_3
,count(name) AS n
FROM answer
)
SELECT
q1_1 / n as q1_1
,q1_2 / n as q1_2
,q1_3 / n as q1_3
,n
FROM src
---クロス集計 N表SELECT
gender
,count(CASE WHEN q1_1=1THEN name ELSEnullEND) AS q1_1
,count(CASE WHEN q1_2=1THEN name ELSEnullEND) AS q1_2
,count(CASE WHEN q1_3=1THEN name ELSEnullEND) AS q1_3
,count(name) AS n
FROM answer
GROUPBY gender
N表はこちらです。GROUP BYでgenderを指定してあげるだけでOKです。
回答者のうち、男性が3人、女性が2人ということがわかりましたね。
つづいて%表も見ていきましょう。
---クロス集計 %表WITH src AS (
SELECT
gender
,count(CASE WHEN q1_1=1THEN name ELSEnullEND) AS q1_1
,count(CASE WHEN q1_2=1THEN name ELSEnullEND) AS q1_2
,count(CASE WHEN q1_3=1THEN name ELSEnullEND) AS q1_3
,count(name) AS n
FROM answer
GROUPBY gender
)
SELECT
gender
,q1_1 / n as q1_1
,q1_2 / n as q1_2
,q1_3 / n as q1_3
,n
FROM src
SELECT e.object_id,
d.name,
count(e.id) AS view_count
FROM events AS e
--dashboardsのidはintgerになっているのでキャスト
JOIN dashboards AS d ON e.object_id = d.id::text
WHERE e.action = 'view'AND e.object_type = 'dashboard'AND e.created_at >= CURRENT_DATE - interval '7 days'GROUPBY1,
2ORDERBY3DESC