sql - 按日期分组的频率不同值
问题描述
我正在尝试获取去年每个月的唯一 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 |
解决方案
您将使用GROUP BY
and 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;
推荐阅读
- java - Cookies 对话框停止脚本转到 facebook 电子邮件输入文本框并发送密钥
- python - 在 python kivy 中更改开关颜色?
- networking - 如果您将 dst 端口为 80 的 TCP 数据包发送到在端口 80 处提供 http 请求的主机,会发生什么?
- python - Python在PySimpleGui界面上用鼠标选择图像上的一个区域
- sql - 如何在sql server中创建组合组
- python - 在 python 中导入 plotly 和 pandas_ta 包时发生错误
- c++ - 在向量名称后使用括号进行向量初始化
- c# - 如何将 Resharper 模板导入 Rider
- c++ - MFC Modal Dialog 落后于其他元素
- spring - Java Spring 创建新记录而不是更新现有记录