如何解决如何在bigquery中使用rowid按日期获取数据集的第一个值并将给定日期的所有其他值设置为0
我有3列的数据集;日期,销售和新销售。
我要在bigquery中做的是给定日期,获取第一个销售值,然后将其填充到名为new_sales的新列中,同时将给定日期的其余日期保留为0。
我该如何在bigquery中创建此查询?
解决方法
您可以使用row_number()
-但是您需要使用一列来定义具有相同date
的行的顺序-我假设使用id
:
select t.*,case when row_number() over(partition by date order by id) = 1 then sales end as new_sales
from mytable t
,
这是我之前做的一个例子-应该对您有用:
http://sqlfiddle.com/#!17/5c48e/8/0
尽管此答案假设您的销售价值在日期上保持一致并且没有变化,如果它们确实发生了变化,例如2020年12月10日有两个不同的日期,那么您需要按日期订购。
我的代码如下:
CREATE TABLE links (
date_item varchar(255),sales INT
);
INSERT INTO links (date_item,sales)
VALUES('12/10/2020',5),('12/10/2020',('13/10/2020',7),('14/10/2020',3),3);
select t.*,case when ROW_NUMBER () OVER (partition BY date_item) =1 then sales else 0 end as new_sales
from links as t
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。