每20次迭代更新SQL中的行

Aks*_*pte 5 mysql sql google-bigquery

在纽约黄色TaxiCab公共数据集的 Google BigQuery中有一个约100万行的表格.从该链接可以看出,架构没有主键.每行代表一次旅行/交易,但没有customer_id字段.

我想添加一个列customer_id并向其分发随机数,以便:

For rows 1-20, `customer_id` should be assigned `1`
For rows 21-40, `customer_id` should be assigned `2`
and so on..
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望表中的确切(和任何)20行具有特定值customer_id.

Fel*_*ffa 2

为每行分配一个随机 ID,每组获得约 20 行的组new_id

#standardSQL
SELECT CAST(FLOOR(COUNT(*) OVER()/20*RAND()) AS INT64) new_id, *
FROM (
  SELECT login
  FROM `ghtorrent-bq.ght_2017_04_01.users`
  LIMIT 1000000
)
Run Code Online (Sandbox Code Playgroud)

证明当超过一百万行时会生成 50,000 个“customers_ids”:

在此输入图像描述