这可能是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中有上一个查询。

10-07 23:26