选择另一列的不同范围的计数和数据总和

时间:2017-07-15 11:57:12

标签: php sql database laravel laravel-5.4

我有一张下面设计的表格:

SaleDataTbl:

  • ID
  • ColumnA
  • ColumnB
  • ColumnC

ColumnA有不同的值,我想将它们分为4个范围:[0-100) , [100-200), [200-300), [300-400]我想要提到的每个范围的行数,以及ColumnB和{{1的总和每个范围。我可以通过多个查询来完成,但我可以只使用一个查询吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

这不仅仅是一个聚合查询:

select grp, count(*), sum(columnb), sum(columnc)
from (select t.*,
             (case when columnA < 100 then '[000-100)'
                   when columnA < 200 then '[100-200)'
                   when columnA < 300 then '[200-300)'
                   when columnA < 400 then '[300-400)'
              end) as grp
      from t
     ) t
group by grp
order by grp;

注意:

  • 我怀疑你真的想要包容性范围。为什么“100”出现在两个桶中?
  • 子查询不是必需的。它突出了范围的定义。
  • 我真的没有看到将其拆分为多个查询的自然方式。