除了count(*)sql语句以获得比率

时间:2014-03-24 17:37:03

标签: mysql sql sql-server

我有一个表,其中一列作为网站名称,一列作为可以为该网站执行的操作。所以,一行看起来像这样 -

site   action
-----  ------
Yahoo  View 

我试图找到一个动作与另一个动作的比例。我知道如何使用下面的语句为整个表执行此操作,但我想知道是否有一个我可以编写的语句将返回站点级别的比率。所以我会得到像雅虎15%,谷歌20%等所有列出的东西,所以我不必为每个网站都有不同的声明。感谢

select (select count(*) from practice 
where action='Like') / (select count(*) 
from practice where action='View') from dual;

1 个答案:

答案 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

根据网站细分,您可以计算应用中的比率或所有匹配的总数。