首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取枢轴结果的PostgreSQL查询

获取枢轴结果的PostgreSQL查询
EN

Stack Overflow用户
提问于 2013-12-12 03:21:16
回答 2查看 47关注 0票数 0

我有一张像这样的日志表

代码语言:javascript
代码运行次数:0
运行
复制
rpt_id | shipping_id | shop_id | status | create_time
-------------------------------------------------------------
1      | 1           | 600     | 1      | 2013-12-01 01:06:50
2      | 1           | 600     | 0      | 2013-12-01 01:06:55
3      | 1           | 600     | 1      | 2013-12-02 10:00:30
4      | 2           | 600     | 1      | 2013-12-02 10:00:30
5      | 1           | 601     | 1      | 2013-12-02 11:20:10
6      | 2           | 601     | 1      | 2013-12-02 11:20:10
7      | 1           | 601     | 0      | 2013-12-03 09:10:10
8      | 3           | 602     | 1      | 2013-12-03 13:15:58

我想使用单个查询来使它看起来像这样

代码语言:javascript
代码运行次数:0
运行
复制
shipping_id | total_activate | total_deactivate
-----------------------------------------------
1           | 2              | 2
2           | 2              | 0
3           | 1              | 0

我该如何质疑这个问题呢?

Note

  • 状态=1=激活
  • 状态=0=停用
  • 计数总激活/停用规则:查看上面的日志表。rpt_id 1& 3,具有相同的shop_id、shipping_id和状态。它只应该算作一个。请参阅结果表。装运id 1只被2家商店激活,它们是shop_id 600和601。

你们能告诉我如何进行查询吗?谢谢你的帮助:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-12 03:32:56

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
select shipping_id,
       sum(case when status=1 then 1 else 0 end) as total_activate,
       sum(case when status=0 then 1 else 0 end) as total_deactivate
from (select distinct shipping_id, 
                      shop_id, 
                      status
        from test) a
group by shipping_id
order by shipping_id

在小提琴上看到它:http://sqlfiddle.com/#!15/f15fd/4

我没有将日期放在查询中,因为它对结果不重要。

票数 1
EN

Stack Overflow用户

发布于 2013-12-12 04:23:27

是的谢谢..。我也想通了,你也可以这样做.thx

代码语言:javascript
代码运行次数:0
运行
复制
SELECT 
    shipping_id, 
    COUNT(DISTINCT CASE WHEN status = 1 THEN shop_id END) AS total_activate, 
    COUNT(DISTINCT CASE WHEN status = 0 THEN shop_id END) AS total_deactivate 
FROM 
    test

GROUP BY 
    shipping_id 
ORDER BY 
    shipping_id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20534434

复制
相关文章

相似问题

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