PostgreSQL:选择具有不同条件的总和

Bandungeuy

我有两个表表:

I.表1像这样:

------------------------------------------
codeid | pos   | neg   | category 
-----------------------------------------
   1   | 10    |  3    | begin2016
   1   |  3    |  5    |  justhere
   3   |  7    |  7    |  justthere
   4   |  1    |  1    |  else
   4   | 12    |  0    |  begin2015
   4   |  5    |  12   |  begin2013
   1   |  2    |  50   |  now
   2   |  5    |  33   |  now
   5   |  33   |   0   |  Begin2011
   5   |  11   |   7   |  begin2000

二。表2像这样:

------------------------------------------
codeid | codedesc         | codegroupid 
-----------------------------------------
1      |  road runner     |    1
2      |  bike warrior    |    2
3      |  lazy driver     |    4
4      |  clever runner   |    1
5      |  worker          |    3
6      |  smarty          |    1
7      |  sweety          |    3
8      |  sweeper         |    1

我想要一个具有两个(或多个)条件的结果:

  1. 对pos和neg求和,其中codegroupid IN('1','2','3')
  2. 如果类别类似“开始%”,则不要求和

因此结果将如下所示:

------------------------------------------
codeid |      codedesc     | sumpos | sumneg
-----------------------------------------
 1   |  roadrunner       |  5     |  55   => (sumpos = 3+2, because 10 have category like 'begin%' so doesn't sum) 
 2   |  bike warrior     |  5     |  33
 4   |  clever runner    |  1     |  1
 5   |  worker           |  0     |  0   => (sumpos=sumneg=0) becase codeid 5 category ilike 'begin%'

按codeid,codedesc分组;
Sumpos是sum(pos),其中类别NOT ILIKE'开始%',但是IF类别ILKIE'开始%'使所有pos值变为零(0);
Sumpos是sum(neg),其中类别NOT ILIKE'begin%',但是IF类别ILKIE'begin%'使所有neg值变为零;

有什么想法怎么做?

大卫·塞弗(David Safe)

尝试:

SELECT
    b.codeid,
    b.codedesc,
    sum(CASE WHEN category LIKE 'begin%' THEN 0 ELSE a.pos END) AS sumpos,
    sum(CASE WHEN category LIKE 'begin%' THEN 0 ELSE a.neg END) AS sumneg
FROM
    table1 AS a
    JOIN
    table2 AS b ON a.codeid = b.codeid
WHERE b.codegroupid IN (1, 2, 3)
GROUP BY
    b.codeid,
    b.codedesc;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择每列具有不同WHERE条件的行的总和

来自分类Dev

需要在具有不同条件的SQL中选择同一字段的总和

来自分类Dev

具有多个不同条件的 SQL 选择

来自分类Dev

选择具有多个条件的不同值

来自分类Dev

获取具有不同条件的同一列的总和

来自分类Dev

选择中具有特定条件的总和

来自分类Dev

在PostgreSQL中选择具有计数的不同值

来自分类Dev

在PostgreSQL中选择具有计数的不同值

来自分类Dev

结合2个具有不同条件的选择查询

来自分类Dev

选择具有条件的不同列的多行

来自分类Dev

选择具有不同别名和不同条件的同一列

来自分类Dev

不同的总和不具有不同的值

来自分类Dev

具有动态条件的条件累加总和

来自分类Dev

将不同的条件选择查询合并为一个-具有结构

来自分类Dev

MySQL多选择在同一查询中具有多个不同的where条件

来自分类Dev

如何合并具有不同WHERE和特殊条件的两个选择

来自分类Dev

连接具有不同列和条件的两个选择语句

来自分类Dev

vba用于选择具有偏移条件的多个不同的活动单元

来自分类Dev

从具有相同成员的两个不同对象中进行条件选择

来自分类Dev

MySQL多选择在同一查询中具有多个不同的where条件

来自分类Dev

如何从数据库中选择具有相同查询但条件不同的表中的数据?

来自分类Dev

具有不同数组的键上所有值的总和

来自分类Dev

PostgreSQL获取所有不同ID的最新记录的总和

来自分类Dev

在PostgreSQL中将两个或多个不同的SELECT查询合并到具有不同条件的同一表

来自分类Dev

具有相同密钥的两个不同字典的总和

来自分类Dev

Matlab:具有不同参数的移动总和(回溯期)

来自分类Dev

具有不同开始日期的熊猫总和列

来自分类Dev

一列具有不同值的行总和

来自分类Dev

选择具有相同名称和大小的列的总和

Related 相关文章

  1. 1

    选择每列具有不同WHERE条件的行的总和

  2. 2

    需要在具有不同条件的SQL中选择同一字段的总和

  3. 3

    具有多个不同条件的 SQL 选择

  4. 4

    选择具有多个条件的不同值

  5. 5

    获取具有不同条件的同一列的总和

  6. 6

    选择中具有特定条件的总和

  7. 7

    在PostgreSQL中选择具有计数的不同值

  8. 8

    在PostgreSQL中选择具有计数的不同值

  9. 9

    结合2个具有不同条件的选择查询

  10. 10

    选择具有条件的不同列的多行

  11. 11

    选择具有不同别名和不同条件的同一列

  12. 12

    不同的总和不具有不同的值

  13. 13

    具有动态条件的条件累加总和

  14. 14

    将不同的条件选择查询合并为一个-具有结构

  15. 15

    MySQL多选择在同一查询中具有多个不同的where条件

  16. 16

    如何合并具有不同WHERE和特殊条件的两个选择

  17. 17

    连接具有不同列和条件的两个选择语句

  18. 18

    vba用于选择具有偏移条件的多个不同的活动单元

  19. 19

    从具有相同成员的两个不同对象中进行条件选择

  20. 20

    MySQL多选择在同一查询中具有多个不同的where条件

  21. 21

    如何从数据库中选择具有相同查询但条件不同的表中的数据?

  22. 22

    具有不同数组的键上所有值的总和

  23. 23

    PostgreSQL获取所有不同ID的最新记录的总和

  24. 24

    在PostgreSQL中将两个或多个不同的SELECT查询合并到具有不同条件的同一表

  25. 25

    具有相同密钥的两个不同字典的总和

  26. 26

    Matlab:具有不同参数的移动总和(回溯期)

  27. 27

    具有不同开始日期的熊猫总和列

  28. 28

    一列具有不同值的行总和

  29. 29

    选择具有相同名称和大小的列的总和

热门标签

归档