首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何SUM() SQL roq\w

如何SUM() SQL roq\w
EN

Stack Overflow用户
提问于 2020-12-08 00:24:51
回答 1查看 34关注 0票数 0

我试过了:

代码语言:javascript
复制
select DISTINCT(campaign_name), count(DISTINCT id) as account_level,
    (SELECT MAX(v) FROM 
        (VALUES (point_reward1) , (point_reward2) , (point_reward3) , (point_reward4) , (point_reward5) , (point_reward6) , (point_reward7) , (point_reward8)) max_point(v))
    AS total_point
from reward_redemption
where
campaign_status !='REJECT_CAMPAIGN'
and is_reported = 0
and campaign_status is not null
AND campaign_name = 'Rwdrdm201049'
group by campaign_name
, point_reward1, point_reward2, point_reward3, point_reward4, point_reward5, point_reward6, point_reward7, point_reward8;

结果:

代码语言:javascript
复制
campaign_name|account_level|total_point|
-------------|-------------|-----------|
Rwdrdm201049 |            1|      30011|
Rwdrdm201049 |            1|      30018|

问:如何才能使一行的结果变成这样?

代码语言:javascript
复制
campaign_name|account_level|total_point|
-------------|-------------|-----------|
Rwdrdm201049 |            2|      60029|

编辑:这是我的数据看起来像

代码语言:javascript
复制
id                     |campaign_name|point_reward1|point_reward2|point_reward3|point_reward4|point_reward5|point_reward6|point_reward7|point_reward8|campaign_status|is_reported|
-----------------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|---------------|-----------|
RWD00V1o2_0W7x0d5N799nY|Rwdrdm201049 |        10018|        20018|        30018|             |             |             |             |             |NO_RESPONSE    |          0|
RWD7001a2c0Y7r0e557i9Ug|Rwdrdm201049 |        10011|        20011|        30011|             |             |             |             |             |NO_RESPONSE    |          0|
EN

回答 1

Stack Overflow用户

发布于 2020-12-08 00:32:12

如果您希望每个活动都有一行,那么这应该是GROUP BY中的唯一一列。为了实现这一点,您应该使用apply

代码语言:javascript
复制
select rr.campaign_name, count(DISTINCT rr.id) as account_level,
       v.total_point
from reward_redemption rr cross apply
     (select max(point) as  total_point
      from (values (rr.point_reward1), (rr.point_reward2) , (rr.point_reward3), (rr.point_reward4), (rr.point_reward5) , (rr.point_reward6), (rr.point_reward7), (rr.point_reward8)
           ) v(point)
     ) v
where rr.campaign_status <> 'REJECT_CAMPAIGN' and
      rr.is_reported = 0 and
      rr.campaign_status is not null and
      rr.campaign_name = 'Rwdrdm201049'
group by rr.campaign_name, v.total_point
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65185492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档