从没有联合的条件组中返回多行

阿布舍克·吉纳尼

我正在尝试在 SQLite DB 中构建一个支持条件组的查询。

这是我到目前为止尝试过的:

SELECT 
      case 
       when A>1 AND B>1 THEN 1
       when X>1 AND Y>1 THEN 2
       when C>1 AND D>1 THEN 3
      END AS data_grp,
     SUM(col1) AS col1,
     SUM(col2) AS col2
FROM tbl
GROUP BY data_grp;

如果一次只有一个案例是真的,这工作得很好。如果连续多个情况为真,则返回第一个情况而不是所有满足条件的组。

我已经尝试过这个union,效果很好,但速度很慢。有没有其他方法可以使用此条件组快速获取结果。

示例数据和预期结果:

DROP TABLE IF EXISTS  tbl;
CREATE TABLE tbl
(
    A INT,
    B INT,
    C INT,
    D INT,
    X INT,
    Y INT,
    col1 int,
    col2 int

);

INSERT INTO tbl(A,B,C,D,X,Y,col1,col2) values (2,3,0,0,0,0,5,10);
INSERT INTO tbl(A,B,C,D,X,Y,col1,col2) values (0,0,0,0,8,10,3,2);
INSERT INTO tbl(A,B,C,D,X,Y,col1,col2) values (5,4,4,9,0,0,3,2);

    SELECT 
          case 
           when A>1 AND B>1 THEN 1
           when X>1 AND Y>1 THEN 2
           when C>1 AND D>1 THEN 3
          END AS data_grp,
         SUM(col1) AS col1,
         SUM(col2) AS col2
    FROM tbl
    GROUP BY data_grp;

查询输出:

"1" "8" "12"
"2" "3" "2"

预期输出:

"1" "8" "12"
"2" "3" "2"
"3" "3" "2"
佩尤什

GROUP BY由于组重叠,您不能直接使用您可以使用以下内容,尽管这也可能很慢。

WITH RECURSIVE
  cnt(x) AS (
     SELECT 1
     UNION ALL
     SELECT x+1 FROM cnt
      LIMIT 3
  )
SELECT x as data_grp, sum(col1), sum(col2)
FROM cnt, 
      (SELECT 
          case when A>1 AND B>1 THEN 1  ELSE 0 END as dg1,
          case when X>1 AND Y>1 THEN 2 ELSE 0 END as dg2,
          case when C>1 AND D>1 THEN 3 ELSE 0 END as dg3,
          col1, col2
        FROM tbl) t WHERE x=dg1 or x=dg2 or x=dg3
GROUP BY x

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从没有jQuery的元素组中删除特定的类

来自分类Dev

从没有jQuery的javascript函数中返回粗体/彩色搜索字符串

来自分类Dev

从没有库的 JPEG 中获取 DPI 返回不正确的结果

来自分类Dev

从没有价值的对象中删除项目

来自分类Dev

JSoup,从没有标签的HTML中删除文本

来自分类Dev

从没有isAnnotationPresent的字段中检查注释

来自分类Dev

如何从没有索引的列中获取数据

来自分类Dev

从没有对象的类中调用函数

来自分类Dev

HTML:从没有ID的输入中获取价值

来自分类Dev

如何从没有ID的表中获取行

来自分类Dev

Rails:从没有模型的表中检索值

来自分类Dev

JSoup,从没有标签的HTML中删除文本

来自分类Dev

从没有 ID 的 Img 中获取 ID

来自分类Dev

从没有标签的firebase中检索孩子

来自分类Dev

如何从没有运算符>>的字符串流中返回下一个标记?

来自分类Dev

从没有子查询的组中找到最大的最小的

来自分类Dev

如何从没有逗号且键中没有值的字典中提取记录

来自分类Dev

从没有联接条件的两个表中选择数据,t-sql

来自分类Dev

从没有联接条件的两个表中选择数据,t-sql

来自分类Dev

从没有Twig过滤器的函数返回原始HTML

来自分类Dev

COVID从没有过滤器的数据返回最新病例/死亡

来自分类Dev

从没有UINavigationController和后退按钮的推送视图返回,可以吗?

来自分类Dev

从没有控制器的 Phoenix router.ex 返回响应

来自分类Dev

从没有辅助变量的过滤器内部循环返回值

来自分类Dev

从没有计算列的SQL表中获取所有列

来自分类Dev

如何从没有访问权限的脚本中的div中删除javascript / jquery悬停事件?

来自分类Dev

在php中从没有时间的字符串中获取日期

来自分类Dev

如何从没有键的 JSON 数组中的数组中读取值?

来自分类Dev

Mybatis:从没有N + 1个选择的选择中返回嵌套地图(即不使用@Many或结果映射子查询)

Related 相关文章

  1. 1

    从没有jQuery的元素组中删除特定的类

  2. 2

    从没有jQuery的javascript函数中返回粗体/彩色搜索字符串

  3. 3

    从没有库的 JPEG 中获取 DPI 返回不正确的结果

  4. 4

    从没有价值的对象中删除项目

  5. 5

    JSoup,从没有标签的HTML中删除文本

  6. 6

    从没有isAnnotationPresent的字段中检查注释

  7. 7

    如何从没有索引的列中获取数据

  8. 8

    从没有对象的类中调用函数

  9. 9

    HTML:从没有ID的输入中获取价值

  10. 10

    如何从没有ID的表中获取行

  11. 11

    Rails:从没有模型的表中检索值

  12. 12

    JSoup,从没有标签的HTML中删除文本

  13. 13

    从没有 ID 的 Img 中获取 ID

  14. 14

    从没有标签的firebase中检索孩子

  15. 15

    如何从没有运算符>>的字符串流中返回下一个标记?

  16. 16

    从没有子查询的组中找到最大的最小的

  17. 17

    如何从没有逗号且键中没有值的字典中提取记录

  18. 18

    从没有联接条件的两个表中选择数据,t-sql

  19. 19

    从没有联接条件的两个表中选择数据,t-sql

  20. 20

    从没有Twig过滤器的函数返回原始HTML

  21. 21

    COVID从没有过滤器的数据返回最新病例/死亡

  22. 22

    从没有UINavigationController和后退按钮的推送视图返回,可以吗?

  23. 23

    从没有控制器的 Phoenix router.ex 返回响应

  24. 24

    从没有辅助变量的过滤器内部循环返回值

  25. 25

    从没有计算列的SQL表中获取所有列

  26. 26

    如何从没有访问权限的脚本中的div中删除javascript / jquery悬停事件?

  27. 27

    在php中从没有时间的字符串中获取日期

  28. 28

    如何从没有键的 JSON 数组中的数组中读取值?

  29. 29

    Mybatis:从没有N + 1个选择的选择中返回嵌套地图(即不使用@Many或结果映射子查询)

热门标签

归档