首页 > 解决方案 > 按日期分组的频率不同值

问题描述

我正在尝试获取去年每个月的唯一 ID 值的频率。但是,我没有得到结果..包括错误消息“SELECT list expression references column user_id which is not grouped or aggregated”。

如何获取每个月的唯一 ID 数量并按月对它们进行分组?

我尝试了什么:

SELECT
  user_id,
  EXTRACT(MONTH FROM date) as month
FROM
  TABLE
WHERE
  date >= '2020-09-01'
GROUP BY
  month

我想要这样的东西:

唯一 user_id 的计数
1 300
2 200
... ...
12 250

标签: sqlgoogle-bigquerydistinctfrequency

解决方案


您将使用GROUP BYand COUNT(DISTINCT)

SELECT EXTRACT(MONTH FROM date) as month, COUNT(DISTINCT user_id)
FROM TABLE
WHERE date >= '2020-09-01'
GROUP BY 1;

我建议您在查询中包含年份。在 BigQuery 中,这是最简单的使用DATE_TRUNC()

SELECT DATE_TRUNC(date, MONTH) as month, COUNT(DISTINCT user_id)
FROM TABLE
WHERE date >= '2020-09-01'
GROUP BY 1;

推荐阅读