私はこのかなり単純なSQLクエリを持っています
SELECT count(date_mdy) AS unique_date_count,
county,
date_s
FROM (
SELECT date_mdy,
county,
date_s
FROM air_quality2
GROUP BY county, date_s ,date_mdy
ORDER BY county, date_s
) AS t1
GROUP BY county, date_s
ORDER BY date_s;
これは戻る
郡名を列ヘッダーにしたい。私はクロス集計関数があることを知っており、ここでそれらを使用する多くの投稿を見てきましたが、このクエリで機能させることができません。
言ったように、count(DISTINCT...)
を使用して単純化します
_SELECT county,
date_s,
count(DISTINCT date_mdy) AS unique_date_count
FROM air_quality2
GROUP BY county,
date_s
ORDER BY 1,2;
_
crosstab
で囲みます
_SELECT *
FROM crosstab($$
SELECT county,
date_s::int,
count(DISTINCT date_mdy) AS unique_date_count
FROM air_quality2
GROUP BY county,
date_s
ORDER BY 1,2;
$$,
$$ SELECT DISTINCT county FROM air_quality2; $$
)
AS ct(
year int,
"Bergen County" int,
"Essex County" int,
"Hunterdon County" int,
"Middlesex County" int,
"Monmouth County" int,
"Morris County" int,
"Union County" int
);
_
更新
year
を定義に含めるのを忘れました。date_s
_をintにキャストする必要がある場合がありますcount(DISTINCT...)
をintにキャストする必要がある場合があります(またはbigintを使用して型を変更します)。SELECT DISTINCT county FROM air_quality2;
_の結果を貼り付けます。