-
三张表分别存应用基本信息,应用的访问情况,应用的评分。准备实现通过一个sql语句同时得到每个应用的访问量及评分,并取访问量最高的十个。所以通过三表联查的方式。
本人算是出学者,着实花了一段时间才正确实现这个功能,希望能有大佬可以进一步优化sql语句。
具体建表语句就不放在这儿了大致是: 一张基本信息表 TB_APP 包含唯一标识 ‘id’ 及名称
‘name’,一条数据相当于一个应用APP。 一张访问量表
TB_APP_VISITAPP包含本表的唯一标识‘id’;所访问的APP的id,字段名为‘appid’。通过appid 关联
TB_APP的id。相当于访问一次某个APP就插入一条数据用来根据appid统计访问量。 一张评分表TB_SCORE
包含包含本表的唯一标识‘id’;分数‘score’;所对应的APP的id,字段名为‘appid’。对某个APP可以无限次打分,根据appid统计计算score字段的平均分。
1.首先看一下只统计访问量的结果。
select *
from (select app.id,
app.name,
count(t.appid) visitCount
from TB_APP app
left join TB_APP_VISITAPP t
on t.appid = app.id
where app.apptype = '1'
group by app.id, app.name
order by visitCount desc)
where rownum