【问题标题】:Get DISTINCT IDs for DISTINCT dates in BigQuery?在 BigQuery 中获取 DISTINCT 日期的 DISTINCT ID?
【发布时间】:2020-06-18 21:07:52
【问题描述】:

我正在尝试在 BigQuery 中获取 DISTINCT 日期的 DISTINCT ID 以构建报告。 日期字段是 kay 分区字段。 我试着从看起来像

的东西开始
SELECT DISTINCT(Id) FROM `project.dataset.table` 
WHERE DATE(KeyPartitionDate) 
BETWEEN '2017-01-01' AND '2020-06-01'

但这只会给我这两个日期之间的不同 ID。 现在,当涉及到查询和检查一年中的每个月的 DISTINCT(Ids) 时,我不知道该怎么做。 我尝试使用 DISTINCT 和 GROUP By 作为日期,但这似乎不是正确的路径...... 有什么想法吗?

【问题讨论】:

  • DISTINCT 不是函数,它是SELECT DISTINCT 的一部分,适用于整个选定的行。跳过那些额外的括号,编写更清晰的代码,即SELECT DISTINCT Id FROM ...

标签: sql google-bigquery distinct-values


【解决方案1】:

如果您正在寻找每个月不同 ID 的数量,那么这可能会对您有所帮助。

SELECT DATE_TRUNC(DATE(KeyPartitionDate), MONTH) as month,COUNT(DISTINCT Id) as num_of_Ids 
FROM `project.dataset.table` 
WHERE DATE(KeyPartitionDate) BETWEEN '2017-01-01' AND '2020-06-01'
GROUP BY DATE_TRUNC(DATE(KeyPartitionDate), MONTH)

【讨论】:

  • 是的,这正是我所寻找的,感谢您的帮助!!
【解决方案2】:
#standardSQL
SELECT DISTINCT
  DATE_TRUNC(DATE(KeyPartitionDate), MONTH) year_month,
  id 
FROM `project.dataset.table` 
WHERE DATE(KeyPartitionDate) 
BETWEEN '2017-01-01' AND '2020-06-01'

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2012-01-03
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多