我有一个表,其中一列作为网站名称,一列作为可以为该网站执行的操作。所以,一行看起来像这样 -
site action
----- ------
Yahoo View
我试图找到一个动作与另一个动作的比例。我知道如何使用下面的语句为整个表执行此操作,但我想知道是否有一个我可以编写的语句将返回站点级别的比率。所以我会得到像雅虎15%,谷歌20%等所有列出的东西,所以我不必为每个网站都有不同的声明。感谢
select (select count(*) from practice
where action='Like') / (select count(*)
from practice where action='View') from dual;
答案 0 :(得分:2)
您需要的关键字是group by
。不知道你的字段表名称有点难,但像这样
Select
sum(case when Action = 'like' then 1 else 0 end) as CountLike,
sum(case when Action = 'view' then 1 else 0 end) as CountView,
(sum(case when Action = 'like' then 1 else 0 end)/count(action)) as RatioLikeTotal ,
(sum(case when Action = 'view' then 1 else 0 end)/count(action)) as RatioViewTotal ,
Site
from
tblLinks
group by
Site
根据网站细分,您可以计算应用中的比率或所有匹配的总数。