【发布时间】:2020-09-03 02:31:00
【问题描述】:
我正在尝试找出创建单个查询的更好方法,该查询将生成每个日期的前 10 个产品的结果。我有一行有两列 - PID (int) 和 EventDate (date),每次点击一行。
您能否建议我如何在某个日期范围内点击排名前 10 的产品来获得结果?我一直在理解如何构建子查询。我只能得到按日期分组的部分,但是我的思绪被困在 count() 和聚合问题上。
这是我对单个日期的查询,但我想查询一个日期范围。当然,我可以通过生成事件日期来进行子查询,但想弄清楚如何更优雅地做到这一点。
SELECT TOP 10 COUNT() as count, PID
FROM view_product
WHERE EventDate = toDate('2020-05-11')
GROUP BY PID
ORDER BY count DESC
预期的输出是这样的:
PID Count Date
1 123 2020-02-04
21 101 2020-02-04
1332 99 2020-02-04
11 51 2020-02-04
634 49 2020-02-04
1332 43 2020-02-04
1 24 2020-02-04
21 23 2020-02-04
1332 6 2020-02-04
11 3 2020-02-04
1 266 2020-02-02
21 241 2020-02-02
1332 232 2020-02-02
11 179 2020-02-02
634 163 2020-02-02
1332 159 2020-02-02
1 144 2020-02-02
21 100 2020-02-02
1332 99 2020-02-02
11 74 2020-02-02
【问题讨论】:
-
您使用的是哪个 sql 引擎?还以表格形式向我们展示您的预期输出。
-
我已经添加了预期的输出并将 SQL 引擎标记为
clickhouse
标签: clickhouse