SQL:使用 UPDATE SET 设计新功能

SQL: Engineering new features using UPDATE SET

我正在尝试创建一个新功能 user_count,它显示特定用户在数据集中出现的次数。这是原始数据集的快照:

这是我为实现此目的而编写的 SQL 代码(用于 GoogleCloud 的 BigQuery):

UPDATE `project-feat-eng.ednetv1.smalltrain` AS t
SET t.user_count = target.total_questions_answered
FROM (
SELECT user_id, count(user_id) AS total_questions_answered
FROM `project-feat-eng.ednetv1.smalltrain` 
GROUP BY user_id) AS target
WHERE target.user_id = t.user_id

问题是 user_count 不是原始 table 中的功能,因此无法更新。上面的代码是否可以修改以成功创建 user_count 功能?

您不能使用 UPDATE 语法引入新列。相反,您应该使用 CREATE OR REPLACE TABLE 语法(使用以下查询)来创建新的 table 或替换现有的

SELECT *, COUNT(1) OVER(PARTITION BY user_id) AS user_count
FROM `project-feat-eng.ednetv1.smalltrain`    

或者,作为一种选择,您可以先使用 ALTER TABLE 添加新列,然后使用您的 UPDATE 语句