Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对某些分组行求和_Sql_Presto - Fatal编程技术网

Sql 对某些分组行求和

Sql 对某些分组行求和,sql,presto,Sql,Presto,我有一个数据集,显示了每类消费者的客人数量和收入,这些消费者访问了一次、两次、3次、4次、5次等 看起来是这样的: 我要得到上面的表的查询是: 选择交易数量,计数*作为客人计数,金额作为收入 从客户处开始计算 按编号分组 按编号订购 现在,我要将客人数量和收入相加,并将它们相加为以下类别:1、2、3、4、5-7和8+ 所以实际上1,2,3,和4将保持不变,但我将在第5-7行和第8行及以后的行中求和 我该怎么做?我想要的表格如下,不要担心数值的准确性: 我希望我的问题被理解。用例和子查询或C

我有一个数据集,显示了每类消费者的客人数量和收入,这些消费者访问了一次、两次、3次、4次、5次等

看起来是这样的:

我要得到上面的表的查询是:

选择交易数量,计数*作为客人计数,金额作为收入 从客户处开始计算 按编号分组 按编号订购

现在,我要将客人数量和收入相加,并将它们相加为以下类别:1、2、3、4、5-7和8+

所以实际上1,2,3,和4将保持不变,但我将在第5-7行和第8行及以后的行中求和

我该怎么做?我想要的表格如下,不要担心数值的准确性:

我希望我的问题被理解。

用例和子查询或CTE:

SELECT (CASE WHEN number_of_trans < 5 THEN CAST(number_of_trans as varchar)
             WHEN number_of_trans < 8 THEN '5-7'
             ELSE '8+'
        END) as grp,
       SUM(guest_count) as guest_count, SUM(revenue) as revenue
FROM (SELECT number_of_trans, COUNT(*) AS guest_count, SUM(amount) AS revenue
      FROM customer_counting
      GROUP BY number_of_trans
     ) x
GROUP BY grp
ORDER BY MIN(number_of_trans);

戈登提案的更简单形式:

SELECT 
  CASE WHEN number_of_trans < 5 THEN cast(number_of_trans as varchar)
    WHEN number_of_trans < 8 THEN '5-7'
    ELSE '8+' 
  END as freq_band, 
  COUNT(*) AS guest_count, 
  SUM(amount) AS revenue 
FROM customer_counting 
GROUP BY CASE WHEN number_of_trans < 5 THEN cast(number_of_trans as varchar)
    WHEN number_of_trans < 8 THEN '5-7'
    ELSE '8+' 
  END
ORDER BY freq_band

8+?@javacash附近不应该有引号吗。谢谢。我想如果把这个问题放到内部组中,可以使问题变得更简单?