重复最大价值

时间:2018-08-13 22:55:07

标签: google-bigquery max

我正在尝试在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

预先感谢!

1 个答案:

答案 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