[英]How to group data with SQL
如何對 Timestream 數據進行分組?
該表看起來像這樣簡化:
point_delivery_number | measure_name | time | value
------------------------------------------------------------------------
AT3265345345 | "consumption" | 2021-01-02 12:00:00.00 | 0.13
AT3265345345 | "generation" | 2021-01-02 12:00:00.00 | 0.32
我想查詢point_delivery_number
== xx 和time
= xx 的位置
結果應該是:
point_delivery_number | consumption | time | generation
----------------------------------------------------------
AT3265345345 | 0.13 | xxxxx | 0.32
我嘗試的是:
SELECT point_delivery_number, measure_name, time, measure_value::double
FROM "energy_datapoints"."energy_data"
WHERE point_delivery_number='AT234123234541243'
GROUP BY point_delivery_number, measure_name, time, measure_value::double;
結果是:
point_delivery_number | measure_name | time | value
------------------------------------------------------------------------
AT3265345345 | "generation" | 2021-01-02 12:15:00.00 | 0.123
AT3265345345 | "generation" | 2021-01-02 12:00:00.00 | 0.32
我希望consumption
和generation
成為一種財產,而不是一種價值。
您正在處理一個鍵/值表。 每個 point_delivery_number 都有帶有鍵(measure_name)和值(時間和值)的行。
您想獲取兩個鍵的值。 一種方法是同時選擇並加入它們:
select
point_delivery_number,
c.value as consumption,
g.value as generation
from
(select * from energy_datapoints.energy_data where measure_name = 'consumption') c
full outer join
(select * from energy_datapoints.energy_data where measure_name = 'generation') g
using (point_delivery_number)
order by point_delivery_number;
另一種方式是聚合。 您希望每個 point_delivery_number 一行,因此您GROUP BY point_delivery_number
。 然后在條件上使用MIN
或MAX
以僅獲取有問題的度量名稱。
select
point_delivery_number,
min(case when measure_name = 'consumption' then value end) as consumption,
min(case when measure_name = 'generation' then value end) as generation
from energy_datapoints.energy_data
group by point_delivery_number
order by point_delivery_number;
免責聲明:我不知道 Amazon Timestream。 上述查詢是標准 SQL 查詢,應該在大多數 RDBMS 中工作(完全按照書面形式或稍作更改)。
至於您自己的查詢:您使它看起來像是在聚合,但似乎您只是選擇單行,因為您的GROUP BY
子句包括所有列。 GROUP BY ____
的意思是“我想匯總我的數據以得到每 ____ 個結果行”。 您希望每個 point_delivery_number 有一個結果行,因此GROUP BY point_delivery_number
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.