簡介
在剛剛發布的 TDengine 3.3.6.0 版本 中,新增了一個非常實用的 函數COLS
,此函數用于獲取選擇函數所在行列信息,主要應用在生成報表數據,每行需要出現多個選擇函數結果,如統計每天最大及最小電壓,并報告最大電壓及最小電壓發生時間。
SQL 語法
COLS(func(expr), output_expr1, [, output_expr2] ... )
功能說明:在選擇函數 func(expr) 執行結果所在數據行上,執行表達式 output_expr1, [, output_expr2],返回其結果,func(expr) 結果不輸出。
返回數據類型:返回多列數據,每列數據類型為對應表達式返回結果的類型。
適用數據類型:全部類型字段。
適用于:表和超級表。
使用說明:
- func 函數類型:必須是 單行選擇函數(如 min max last 等函數)。
- 主要用于一個 sql 中獲取多個選擇函數結果關聯列的場景,例如
select cols(max(c0), ts), cols(max(c1), ts) from ...
可用于獲取 c0、c1 列最大值的不同 ts 值。 - 注意,函數 func 的結果并沒有返回,如需輸出 func 結果,可額外增加輸出列,如
select fist(ts), cols(first(ts), c1) from ...
- 可設置別名
- 輸出一列別名設置,如
select cols(first(ts), c1) as c11 from ...
- 輸出多列別名設置,如
select cols(first(ts), c1 as c11, c2 as c22)
- 輸出一列別名設置,如
示例
獲取智能電表每天最大壓電及發生時間和最小電壓及發生時間,SQL 如下:
select cols(max(voltage),voltage as max_voltage , ts as max_ts), cols(min(voltage), voltage as min_voltage, ts as min_ts) from meters interval(1d) ;
查詢結果:
max_voltage | max_ts | min_voltage | min_ts |
================================================================================256 | 2017-07-14 14:40:00.000 | 230 | 2017-07-14 17:40:00.000 |257 | 2017-07-15 10:40:00.000 | 230 | 2017-07-15 01:40:00.000 |256 | 2017-07-16 08:40:00.000 | 232 | 2017-07-16 01:40:00.000 |258 | 2017-07-17 04:40:00.000 | 231 | 2017-07-17 01:40:00.000 |254 | 2017-07-18 00:40:00.000 | 231 | 2017-07-18 17:40:00.000 |257 | 2017-07-19 12:40:00.000 | 230 | 2017-07-19 11:40:00.000 |258 | 2017-07-20 20:40:00.000 | 234 | 2017-07-20 13:40:00.000 |258 | 2017-07-21 04:40:00.000 | 231 | 2017-07-21 13:40:00.000 |258 | 2017-07-22 12:40:00.000 | 230 | 2017-07-22 07:40:00.000 |256 | 2017-07-23 10:40:00.000 | 230 | 2017-07-23 03:40:00.000 |
Query OK, 10 row(s) in set (0.020148s)
訪問官網
更多內容歡迎訪問 TDengine 官網