微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在bigquery中使用rowid按日期获取数据集的第一个值并将给定日期的所有其他值设置为0

如何解决如何在bigquery中使用rowid按日期获取数据集的第一个值并将给定日期的所有其他值设置为0

我有3列的数据集;日期,销售和新销售。

我要在bigquery中做的是给定日期,获取一个销售值,然后将其填充到名为new_sales的新列中,同时将给定日期的其余日期保留为0。

我该如何在bigquery中创建此查询

enter image description here

解决方法

您可以使用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 举报,一经查实,本站将立刻删除。