首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用聚合函数获取SUM和COUNT

如何使用聚合函数获取SUM和COUNT
EN

Stack Overflow用户
提问于 2015-04-02 17:49:51
回答 3查看 78关注 0票数 0

我有像下面这样的桌子

代码语言:javascript
复制
SCHEME  BROKNO  BRANNO  ACCNO   TYPE    SCAMT   FUNAMT  MONTH
AFS       123    345    125635  RN       130     140    11
AFS       123    345    125635  RN       130     140    11
AFS       123    345    125635  RN       145     185    11
AFS       123    345    125635  RN       130     140    11
AFS       123    345    125635  RN       180     220    10
AFS       123    345    125635  RN       200     260    10
AFS       123    345    125635  RN       180     220    10
AFS       123    345    125635  RN       180     220    10

现在我必须创建基于月列和组(SCHEME,BROKNO,BRANNO,ACCNO,TYPE)的报告。

报告它应该是

代码语言:javascript
复制
SCHEME BROKNO BRANNO ACCNO TYPE SUM(SCAMT) SUM(FUNAMT) MONTH11CNT   
AFS    123    345   125635 RN    535            605      4         

SUM(SCAMT) SUM(FUNAMT) MONTH11CNT 
740         920           4

我已经尝试了case语句,但我得到了所有记录组的相同计数。请谁给我点子。

EN

回答 3

Stack Overflow用户

发布于 2015-04-02 18:09:37

看起来您只是想按方案、brokno、branno、accno、type和month进行分组:

代码语言:javascript
复制
select 
  scheme, brokno, branno, accno, type, month, 
  sum(scamt), sum(funamt), count(*) as monthcnt
from mytable
group by scheme, brokno, branno, accno, type, month;

编辑:如果你想在列中显示月份,你必须事先知道月份,并相应地编写查询:

代码语言:javascript
复制
select 
  scheme, brokno, branno, accno, type,
  sum(case when month = 10 then scamt end) as month10scamt,
  sum(case when month = 10 then funamt end) as month10funamt,
  sum(case when month = 10 then 1 end) as month10cnt,
  sum(case when month = 11 then scamt end) as month11scamt,
  sum(case when month = 11 then funamt end) as month11funamt,
  sum(case when month = 11 then 1 end) as month11cnt
from mytable
where month in (10,11)
group by scheme, brokno, branno, accno, type;
票数 1
EN

Stack Overflow用户

发布于 2015-04-02 18:14:59

您可以使用它来获得您想要的结果

代码语言:javascript
复制
SELECT 
  SCHEME,
  BROKNO,
  BRANNO,
  ACCNO,
  TYPE,
  SUM(SCAMT) As SCAMTTOTAL,
  SUM(FUNAMT) AS FUNAMTTOTAL,
  MONTH As MONTHNAME,
  COUNT(MONTH) AS MONTHCOUNT
FROM MyTABLE
GROUP BY
  SCHEME,
  BROKNO,
  BRANNO,
  ACCNO,
  TYPE,
  MONTH

如果您需要单行中的结果,那么只需将其转换为CTE并进行查询即可。

SQLFIDDLE

票数 0
EN

Stack Overflow用户

发布于 2015-04-02 18:24:38

假设您想要计算每个月内的行数,一种解决方案是将该月也纳入聚合:

代码语言:javascript
复制
select SCHEME, BROKNO, BRANNO, ACCNO, TYPE, MONTH,
       sum(SCAMT),
       sum(FUNAMT),
       Count(*) as MONTHCOUNT
from table
group by SCHEME, BROKNO, BRANNO, ACCNO, TYPE, MONTH
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29409917

复制
相关文章

相似问题

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