SELECT A.*, B.name, AVG(B.col2) AS avg_col2, SUM(B.col3) AS sum_col3, C.start_time, C.end_time FROM A LEFT JOIN ( SELECT name, col2, col3 FROM B WHERE EXISTS ( SELECT 1 FROM C WHERE B.insert_time BETWEEN C.start_time AND C.end_time ) GROUP BY name, col2, col3 ) AS B ON A.sid = B.sid LEFT JOIN C ON A.cid = C.cid -- 添加其他JOIN的表 GROUP BY A.sid, A.col1, A.col2, A.col3, B.name, C.start_time, C.end_time;
SELECT A.*, B.name, B.avg_col2, B.sum_col3, C.start_time, C.end_time FROM A INNER JOIN ( SELECT name, AVG(col2) AS avg_col2, SUM(col3) AS sum_col3 FROM ( SELECT B1.name, B1.col2, B1.col3 FROM B AS B1 INNER JOIN C AS C1 ON B1.insert_time BETWEEN C1.start_time AND C1.end_time ) AS B_filtered GROUP BY name ) AS B ON A.sid = B.name -- 假设name是关联键 LEFT JOIN C ON A.cid = C.cid -- 添加其他JOIN的表 GROUP BY A.sid, A.col1, A.col2, A.col3, B.name, B.avg_col2, B.sum_col3, C.start_time, C.end_time;