Sql 如何按查询“关联”分组中的列?
说输入: 表T1Sql 如何按查询“关联”分组中的列?,sql,join,group-by,google-cloud-sql,Sql,Join,Group By,Google Cloud Sql,说输入: 表T1 row_num_unimportant indicator 1 111 2 222 表T2 row_num_unimportant indicator val_timestamp val_of_interest2 1 112 timestamp2 value1 2
row_num_unimportant indicator
1 111
2 222
表T2
row_num_unimportant indicator val_timestamp val_of_interest2
1 112 timestamp2 value1
2 113 timestamp1 value3
3 114 timestamp3 value2
4 223 timestamp4 value5
5 224 timestamp5 value4
我想看看加入结果
indicator min_timestamp val_of_interest2
111 timestamp1 value3
222 timestamp4 value5
困难在于要使感兴趣的值2与最小时间戳相关联
以天真的方式说:
SELECT
indicator,
MIN(val_timestamp) AS min_timestamp,
???? AS val_of_interest2
FROM (
SELECT
t1.indicator,
t2.val_timestamp,
t2.val_of_interest2
FROM
T1 t1
JOIN T2 t2
ON (t2.indicator >= t1.indicator)
)
GROUP BY
indicator
基本上,我应该在里面放些什么???部分还是我需要一个不同的查询
谢谢 您不会为此使用group by。一个选项是窗口功能:
SELECT indicator, val_timestamp, val_of_interest2
FROM (SELECT t1.indicator, t2.val_timestamp, t2.val_of_interest2,
ROW_NUMBER() OVER (PARTITION BY t1.indicator ORDER BY t2.val_timestamp) as seqnum
FROM T1 t1 JOIN
T2 t2
ON t2.indicator >= t1.indicator
) t
WHERE seqnum = 1;
用你正在使用的数据库标记你的问题。我正在使用我公司自己的SQL引擎/数据库执行查询,但是SQL语法应该是相当标准的,就像BigQuery一样,Google可以使用SQL。谢谢Gordon!我会试试看