我正在尝试在Big Query中编写一个查询,以考虑另一列中的重复值来提取最大值。
w B 121 7/14 123 7/18 121 8/20 123 8/25 123 8/01 所以结果应该是 B 121 8/20 123 8/25
预先感谢!
答案 0 :(得分:2)
以下是用于BigQuery标准SQL
#standardSQL
SELECT w, MAX(b) b
FROM `project.dataset.table`
GROUP BY w
您可以根据问题中的伪数据进行检查:
#standardSQL
WITH `project.dataset.table` AS (
SELECT 121 w, '7/14' b UNION ALL
SELECT 123, '7/18' UNION ALL
SELECT 121, '8/20' UNION ALL
SELECT 123, '8/25' UNION ALL
SELECT 123, '8/01'
)
SELECT w, MAX(b) b
FROM `project.dataset.table`
GROUP BY w
-- ORDER BY w
结果为
Row w b
1 121 8/20
2 123 8/25
在某些情况下-仅使用MAX()是不够的。例如,如果您使用mm / dd / yyyy格式的日期-您将需要首先将该字符串解析为日期类型,然后像下面的示例中一样应用max()
#standardSQL
WITH `project.dataset.table` AS (
SELECT 121 w, '7/14/2018' b UNION ALL
SELECT 123, '7/18/2018' UNION ALL
SELECT 121, '8/20/2017' UNION ALL
SELECT 123, '8/25/2018' UNION ALL
SELECT 123, '8/01/2018'
)
SELECT w, MAX(PARSE_DATE('%m/%d/%Y', b)) b
FROM `project.dataset.table`
GROUP BY w
ORDER BY w
Row w b
1 121 2018-07-14
2 123 2018-08-25