我有一个非常简单的 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;
Run Code Online (Sandbox Code Playgroud)
这返回
我希望县名成为列标题。我知道有一个交叉表函数,并且我在这里看到了他们使用它的许多帖子,但我无法让它处理这个查询。
正如我所说,使用简化它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;
Run Code Online (Sandbox Code Playgroud)
现在把它包起来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
);
Run Code Online (Sandbox Code Playgroud)
更新
year
定义中。date_s
为 intcount(DISTINCT...)
为 int(或 bigint 并更改类型)。SELECT DISTINCT county FROM air_quality2;
。 归档时间: |
|
查看次数: |
34399 次 |
最近记录: |