首页 > 解决方案 > 为具有相同标识符的多个条目分配增量值

问题描述

我有这种情况,即相同的值(项目)可以分配多个日期

Item1   01/01/2018
Item1   01/03/2018
Item1   01/05/2018
Item2   01/01/2018
Item2   01/03/2018
Item3   01/03/2018

有没有办法为同一项目的每个日期值分配一个数字,以便输出是一个递增的数字列表(每个不同项目从 1 开始并计数)?

Item1   01/01/2018   1
Item1   01/03/2018   2
Item1   01/05/2018   3
Item2   01/01/2018   1
Item2   01/03/2018   2
Item3   01/03/2018   1

谢谢您的帮助!

标签: google-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT item, dt, 
  ROW_NUMBER() OVER(PARTITION BY item ORDER BY PARSE_DATE('%d/%m/%Y', dt)) value
FROM `project.dataset.table`

您可以使用您提供的示例数据进行测试和使用

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Item1' item, '01/01/2018' dt UNION ALL
  SELECT 'Item1', '01/03/2018' UNION ALL
  SELECT 'Item1', '01/05/2018' UNION ALL
  SELECT 'Item2', '01/01/2018' UNION ALL
  SELECT 'Item2', '01/03/2018' UNION ALL
  SELECT 'Item3', '01/03/2018' 
)
SELECT item, dt, 
  ROW_NUMBER() OVER(PARTITION BY item ORDER BY PARSE_DATE('%d/%m/%Y', dt)) value
FROM `project.dataset.table`
ORDER BY item, dt   

结果

Row item    dt          value    
1   Item1   01/01/2018  1    
2   Item1   01/03/2018  2    
3   Item1   01/05/2018  3    
4   Item2   01/01/2018  1    
5   Item2   01/03/2018  2    
6   Item3   01/03/2018  1    

推荐阅读