首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按不同条件分组两次,同一列

按不同条件分组两次,同一列
EN

Stack Overflow用户
提问于 2018-11-27 13:43:57
回答 1查看 38关注 0票数 1

我有包含以下列的数据:

代码语言:javascript
运行
复制
OFFICER_ID, CLIENT_ID, SECURITY_CODE, POSITION_SIZE 

然后以每行为例:

代码语言:javascript
运行
复制
officer1, client100, securityZYX, $100k,
officer2, client124, securityADF, $200k,
officer1, client130, securityARR, $150k,
officer4, client452, securityADF, $200k,
officer2, client124, securityARR, $500k,
officer7, client108, securityZYX, $223k, 
and so on.

正如你所看到的,每个客户都有一个单独的官员负责买卖证券,但每个客户可以购买不同的证券。

除了按客户持有的证券总金额对官员进行排名(我已经这样做了),我需要通过添加客户ID持有的总证券来创建总客户账户范围,例如,总证券持有金额<100万美元,介于100万美元和300万美元之间,以及>300万美元。

我试过了:

代码语言:javascript
运行
复制
SELECT officer_ID, SUM(position_size) as AUM
FROM trades
GROUP BY client_ID
HAVING AUM > 1000000 AND AUM < 3000000; 

我拿到了一份所有警察出现了几次的名单,没有总数。

我需要一个简单的:

代码语言:javascript
运行
复制
Officer_ID | range < 1m | range 1m-3m | range > 3m

officer1,客户账户的证券总额小于100万,客户账户的证券总额在100万到300万之间,等等。

请给我指个方向好吗?

更新

我修改了Tim的建议代码,并获得了所需的输出:

代码语言:javascript
运行
复制
SELECT
    OFFICER_ID,
    SUM(CASE WHEN total < 1000000 THEN total END) AS "range < 1m",
    SUM(CASE WHEN total >= 1000000 AND total < 3000000 THEN total END) AS "range 1m-3m",
    SUM(CASE WHEN total >= 3000000 THEN total END) AS "range > 3m"
FROM
(
    SELECT OFFICER_ID, CLIENT_ID, SUM(POSITION_SIZE) AS total
    FROM trades
    GROUP BY OFFICER_ID, CLIENT_ID
) t
GROUP BY
    OFFICER_ID;

太客气了,蒂姆,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-27 13:53:48

我们可以尝试两次聚合,第一次是由官员和客户进行汇总,以获得客户总数,第二次是由官员单独进行汇总,以获得计数:

代码语言:javascript
运行
复制
SELECT
    OFFICER_ID,
    COUNT(CASE WHEN total < 1000000 THEN 1 END) AS "range < 1m",
    COUNT(CASE WHEN total >= 1000000 AND total < 3000000 THEN 1 END) AS "range 1m-3m",
    COUNT(CASE WHEN total >= 3000000 THEN 1 END) AS "range > 3m"
FROM
(
    SELECT OFFICER_ID, CLIENT_ID, SUM(POSITION_SIZE) AS total
    FROM trades
    GROUP BY OFFICER_ID, CLIENT_ID
) t
GROUP BY
    OFFICER_ID;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53493436

复制
相关文章

相似问题

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