这可能是sql的一个淘气用法。。。但在这里。。。。
我有一张桌子:
Banners
--------------
BannerID
request_t0
clicks_t0
request_t1
clicks_t1
...
request_t6
clicks_t6
使用请求和点击的数量,我为每一组计算一个ctr(点击与印象的比率)。。。。
ctr_t0=点击次数/请求次数*100
所以现在我每排有6个独立的中心。。。。
对于输出,我想知道每一个CTR在它的行中最高的频率是多少。。。
因此,给定集合:
ctr_t0 ctr_t1 ctr_t3
------ ------ ------
2.39% 1.24% 1.5%
1.4% 2.46% 2.2%
3.1% 2.45% 1.45%
因此,我希望:
ctr_t0_count ctr_t1_count ctr_t3_count
------------ ------------ ------------
2 1 0
你有什么想法可以在不学编程语言的情况下做这件事吗?:-)
最佳答案
select
sum(case when greatest(ctr_t0,ctr_t1,ctr_t3) = ctr_t0 then 1 else 0 end) as ctr_t0_count,
sum(case when greatest(ctr_t0,ctr_t1,ctr_t3) = ctr_t1 then 1 else 0 end) as ctr_t1_count,
sum(case when greatest(ctr_t0,ctr_t1,ctr_t3) = ctr_t3 then 1 else 0 end) as ctr_t3_count
from (select .... ) as t
在select中有上一个查询。