java - 统计出20170403到20170420期间点击量前十的广告每天的点击量
问题描述
有一张广告表advertise(advertise_id,date,count),数据如下:
我需要统计出某一时间段内排名前10的广告,在这个时间段内每天的点击量。
查询出来的结果应该是每一天都有10条不同advertise_id的数据,这个sql应该怎么写?
问题解答
回答1:有个问题是没出现在记录中的广告日期点击数显不显示,如果要显示的话就需要先构造出这部分数据,不显示就用下面这个sql就好
select a.* from advertise a join (select advertise_id,sum(count) sm from advertise group by advertise_id order by sm desc limit 10) b on a.advertise_id=b.advertise_id where a.date BETWEEN 20170403 AND 20170420 order by a.date,a.count;回答2:
SELECT s.date,s.advertise_id,s.count FROM advertise_stat sWHERE EXISTS (SELECT advertise_id FROM (SELECT advertise_id FROM advertise_stat GROUP BY advertise_id ORDER BY count DESC LIMIT 10) AS advertise_tempWHERE advertise_id = s.advertise_id )AND s.date BETWEEN 20170403 AND 20170420ORDER BY s.date ASC,s.count DESC
应该是这样的吧
相关文章:
1. docker - 如何修改运行中容器的配置2. docker 下面创建的IMAGE 他们的 ID 一样?这个是怎么回事????3. docker-machine添加一个已有的docker主机问题4. javascript - 修改表单多选项时和后台同事配合的问题。5. 关于docker下的nginx压力测试6. angular.js - angularjs的自定义过滤器如何给文字加颜色?7. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题8. javascript - 怎么实现点击表格中的某一行然后就在表单处出现表格中的对应的属性值啊9. redis - 究竟是选择微信小程序自带的统计工具还是自己开发一个数据统计的代码?10. angular.js - angular ui bootstrap 中文显示问题

网公网安备