问题描述
如果有人熟悉 Blazer / sql,我真的可以使用您的帮助:
我正在尝试在 Blazer 中创建折线图 => https://blazer.dokkuapp.com/queries/5-line-chart-format-2
我想绘制 [qikpac_id] 和 [ reading_values.value ]
但需要过滤阅读类型什么是“soc”@
WHERE reading_types.value = 'soc'
所以我最终有 4 列,我只想要
Y 轴为 reading_values.value
X 作为阅读时间
Qikpacs 作为绘图值
SELECT
-- ## comented ## date_trunc('minute',reading_time)::date AS minute,reading_time,reading_types.value as Reading_Type,reading_values.value as Reading_Value,qikpac_id as Qikpac
FROM reading_values
INNER JOIN reading_types
ON reading_values.reading_type_id = reading_types.id
JOIN battery_statuses
ON reading_values.battery_status_id = battery_statuses.id
JOIN battery_readings
ON reading_values.battery_reading_id = battery_readings.id
WHERE reading_types.value = 'soc'
ORDER BY 1
这让我:
| reading_time | reading_type | reading_value | qikpac_id |
2021-05-30 09:10:33 +1000 soc 49 13
2021-05-30 09:16:33 +1000 soc 49 14
2021-05-30 09:24:33 +1000 soc 49 15
2021-05-30 09:35:33 +1000 soc 49 16
2021-05-30 09:48:33 +1000 soc 49 13
2021-05-30 09:55:33 +1000 soc 49 14
2021-05-30 10:06:33 +1000 soc 49 15
2021-05-30 10:19:33 +1000 soc 49 16
谢谢, 我很困.. :)
解决方法
对于在下面搜索 Blazer 的任何人来说,答案就是:
您需要通过以下方式订购: 3 列 - 时间戳、字符串、数字
而且 Blazer 对顺序和类型非常严格,否则你将无法像我一样快速到达。
-- 3 columns - timestamp,string,numeric
SELECT
date_trunc('minute',battery_readings.reading_time)::timestamp AS minute,qikpacs.serial_number as Qikpac,reading_values.value as Reading_Value
FROM reading_values
INNER JOIN reading_types
ON reading_values.reading_type_id = reading_types.id
JOIN battery_statuses
ON reading_values.battery_status_id = battery_statuses.id
JOIN battery_readings
ON reading_values.battery_reading_id = battery_readings.id
JOIN qikpacs
ON battery_readings.qikpac_id = qikpacs.id
WHERE reading_types.value = 'soc'
AND ( qikpacs.serial_number = 'QP016' )
GROUP BY battery_readings.reading_time,qikpacs.serial_number,reading_values.value
ORDER BY battery_readings.reading_time,reading_values.value