我有一个数据集,用户可以在其中执行多个操作,每个操作都有时间戳.

User Action 1 Action 2 Action 3
1 5-2-2022 null 4-1-2022
2 4-2-2022 4-1-2022 4-1-2022
3 1-2-2022 null null

我想按日期统计行动:

Date Action 1 Action 2 Action 3
1-2-2022 1 0 0
4-1-2022 0 1 2
4-2-2022 1 0 0
5-2-2022 1 0 0

我正在努力弄清楚如何在BigQuerySQL中做到这一点,我甚至不知道该用什么词来形容谷歌.有什么 idea 吗?

提前谢谢!

推荐答案

考虑以下方法

select * from (
  select * from your_table
  unpivot (date for col in (action1, action2, action3))
)
pivot (count(distinct user) for col in ('action1', 'action2', 'action3'))    

enter image description here

Sql相关问答推荐

在多个柱上连接时,如何确定连接条件?

使用Lead获取下一个不同的日期

Oracle SQL-将结果列在单行中

仅当交叉应用返回单值时才更新记录

带日期函数的复合索引不允许只扫描索引吗?

Haystack针相交-在元素最多的Haystack中查找集合

将时间范围划分为全天和前后剩余小时

插入具有预期逻辑的查询以Forking 表

将SQL Server查询改进为;线程安全;

查询以从时间范围列表中查找唯一时间段

使用多个数据库调用重载 CQRS 模式

SQL 搜索 - 获取最大值日期的奇怪行为

复制行并根据 Oracle SQL 中其他表的值更改值

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

如何使用 join 和 where 子句从另一表中仅删除一个表中的值

如何使用SQL将患者平均分配给他们所在地区的doctor

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

根据是否存在值组合分组并 Select 行

使用日期和间隔作为键加入 Athena 上的表?

创建一个将层次 struct 级别放入列中的查询