google-bigquery - 按范围列排序(字符串类型)数字 BigQuery

标签 google-bigquery

我有 BQ 表,其中有范围列。值类似于(0-50, 100-150, 200-250,1000-1200, >=400)

当我在此列上执行 orderBy 时,我得到的字典顺序如下 (0-50,100-150,1000-1200,200-250,>=400)

但我希望它按数字排序,例如(0-50,100-150, 200-250, >=400, 1000-1200)。 有人可以帮助我如何为此创建查询吗?

最佳答案

您可以使用以下示例中的方法

#standardSQL
with data as (
  select '0-50' range_col union all
  select '100-150' union all
  select '200-250' union all
  select '1000-1200' union all
  select '>=400' 
)
select *
from data
order by cast(regexp_extract(range_col, r'\b(\d+)\b') as int64)

带输出

enter image description here

关于google-bigquery - 按范围列排序(字符串类型)数字 BigQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64287319/

相关文章:

google-bigquery - BigQuery 表包含神秘的重复行

python - 如何在 BigQuery 客户端 Python API 中以原子方式覆盖表

google-bigquery - 如何在不指定列名的情况下使用 bigquery 在表中的每一列上调用内置函数?

sql - 使用 BigQuery sql 转置行中的列

google-bigquery - BigQuery `ANY_VALUE` 是否可以保证值来自同一行?

google-bigquery - 为什么这 2 个查询具有相同的 "GB processed"(因此成本)?

join - 通过加入 BigQuery 进行更新

google-bigquery - 如何在 Google Cloud HTTP Loadbalancer 日志记录中记录 X-Forwarded-For 以导出到 BigQuery

sql - 我们如何从BigQuery中删除重复数据并将其保存到另一个具有很多属性的表中

google-bigquery - 如何按所有列进行分组而不是单独编写每一列?