0

我有一个这样的点击屋表:

page_id  ad_id   date  
-------|-------|------------|
1      | 10    | 04/03/2009 |
1      | 2     | 04/03/2009 |
1      | 2     | 04/03/2009 |
1      | 4     | 04/03/2009 |
1      | 2     | 04/03/2009 |
2      | 1     | 04/03/2009 |
2      | 5     | 04/03/2009 |
3      | 2     | 04/03/2009 |
3      | 2     | 04/03/2009 |
3      | 2     | 04/03/2009 |
3      | 8     | 04/03/2009 |
4      | 1     | 04/03/2009 |
4      | 1     | 04/03/2009 |
5      | 2     | 04/03/2009 |

此表包含不同页面上不同广告块的点击历史记录。只是一个大日志。我想获得每个页面点击次数最多的广告。类似的东西

page_id  ad_id   hits  
-------|-------|------------|
1      | 2     | 3          |
2      | 1     | 1          |
3      | 2     | 3          |
4      | 1     | 2          |
5      | 2     | 1          |

希望有人能帮助我。谢谢。

4

2 回答 2

2

尝试这个:

SELECT page_id, ad_id, count() cnt
FROM TABLE_NAME
GROUP BY page_id, ad_id
ORDER BY page_id, cnt DESC
LIMIT 1 BY page_id

链接到文档

于 2018-03-29T08:41:20.660 回答
0

还有一种近似计算的解决方案可以给出不完全准确的结果,但很快(可以通过子查询计算命中数)

SELECT page_id, topK(1)(ad_id) ad_id
FROM table_name
GROUP BY page_id
于 2018-04-18T13:29:09.443 回答