sql - 如何在 PostgreSQL 中生成“假”行以用于 d3.js
问题描述
我有一个比较日期的查询,但问题是我需要列名是一行。这是我的查询:
SELECT
ROUND(AVG(availability_percentage)
FILTER (WHERE availability_date BETWEEN '2020-03-01' AND '2020-04-01') , 2) AS avg_march,
ROUND(AVG(availability_percentage)
FILTER (WHERE availability_date BETWEEN '2020-04-01' AND '2020-05-01'), 2) AS avg_april
FROM dashboard.availability WHERE availability_date BETWEEN '2020-03-01' AND '2020-05-01';
如您所见,我正在比较 3 月和 4 月的平均百分比结果,但问题是 avg_march 和 avg_april 是列名。我需要它是一个行结果,以便我可以将它转换为 JSON 并在条形图上的 D3.js 上使用它。
avg_march avg_april
_________ _________
98.28 95.60
但我需要的结果是:
month average
_________ _______
avg_march 98.28
avg_april 95.60
解决方案
试试下面的,这里是演示。
SELECT
unnest(array['avg_march', 'avg_april']) AS months,
unnest(array[avg_march, avg_april]) AS values
FROM myTable
输出:
| months | values |
| --------- | ------ |
| avg_march | 98.28 |
| avg_april | 95.6 |
crosstab()
你也可以试试
create extension if not exists tablefunc;
select *
from crosstab
(
'select *
from myTable'
) as ct(months text, values float)
推荐阅读
- typescript - typecirpt 我如何定义 ...props 接口?
- python - 如何将python嵌套字典转换为非嵌套字典?
- powershell - 当它之后有另一个 GET 时,GET 不打印?
- google-calendar-api - 通过 API 创建的事件未在打印中列出
- python - 如何使用 keras 将 LSTM 模型转换为线性回归?
- java - 进行邮件合并后样式不保留(包括字体大小、字体粗细、字体颜色……)
- python-3.x - 打印附加到自动缩放组的实例使用的自动缩放组和 AMI
- assembly - 这个内核调用如何知道从计数器寄存器中获取
- c# - Xamarin.Forms:无法从 Firebase 实时数据库反序列化/接收 JSON 数据
- math - 指数退避