[英]BigQuery not allow Subselect in select clause
我有2个表的样本:
table POINT_STATUS:
rank_point status
9 excellent
5 good
3 bad
0 fail
table STUDENT_POINT:
student point
student A 8
student B 9
student C 5
student D 4
如何在BigQuery上创建查询以获取学生的状态(with point >= rank_point)
?
注意: - BigQuery不允许在select子句中使用Subselect。
注意:BigQuery不允许在select子句中使用Subselect。
它不使用标准SQL支持-见启用标准SQL
WITH POINT_STATUS AS (
SELECT 9 AS rank_point, 'excellent' AS status UNION ALL
SELECT 5 AS rank_point, 'good' AS status UNION ALL
SELECT 3 AS rank_point, 'bad' AS status UNION ALL
SELECT 0 AS rank_point, 'fail' AS status
),
STUDENT_POINT AS (
SELECT 'student A' AS student, 8 AS point UNION ALL
SELECT 'student B' AS student, 9 AS point UNION ALL
SELECT 'student C' AS student, 5 AS point UNION ALL
SELECT 'student D' AS student, 4 AS point
)
SELECT
student, point,
(SELECT status
FROM POINT_STATUS
WHERE rank_point <= point
ORDER BY rank_point DESC
LIMIT 1
) AS status
FROM STUDENT_POINT
同时,如果您绑定了Legacy SQL,请参阅下文
SELECT student, point, status FROM (
SELECT
student, point, status,
ROW_NUMBER() OVER(PARTITION BY student ORDER BY rank_point DESC) AS pos
FROM STUDENT_POINT
CROSS JOIN POINT_STATUS
WHERE point - rank_point >= 0
)
WHERE pos = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.