如何对 MySQL 中的 UNION 查询中的多个字段求和?

2024-04-04

我目前正在学习如何使用MySQL在查询中我陷入了两难的境地。

目前,我有 2 个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名称。

为简单起见,查询的输出如下所示:

查询一:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    3     |     0    |      0
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1

查询二:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    1     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data6  |  data66  |  data666   |    0     |     5    |      0

两个查询都包含相同的 FieldOne-FieldThree 数据,但可能包含不同的 CountOne-CountThree 值。

永远不会出现数据包含所有 3 个字段中的值的情况CountOne, CountTwo, CountThree,但仅在ONE这 3 个字段中。

我想做的是创建一个单独的UNION QUERY其输出如下:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    4     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1
    data6  |  data66  |  data666   |    0     |     5    |      0

基本上,如果同一数据中有多个实例FieldOne,并且有一个相同的值CountOne, CountTwo, or CountThree对于相同数据的多个实例,我想得到SUM该字段的数据并按以下方式分组FieldOne.

但是,如果同一数据有多个实例,但它包含不同实例中的值Count字段,那么查询应该为其创建一个单独的记录,如示例中所示,data1包含两者的值CountOne and CountTwo fields.

我做了这样的事情SQL ViewAccess 2013 的UNION QUERY:

SELECT *
FROM [QueryOne]
ORDER BY FieldOne
UNION SELECT *
FROM [QueryTwo]
ORDER BY FieldTwo;

然而,由于我的知识有限,我一直坚持如何将我想要的内容一次性合并到上述代码中,而不是创建另一个单独的查询。


您可以根据 union 的结果使用带有 sum 和 group by 的选择

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view1
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view2
  ) T 
group by  FieldOne
    , FieldTwo 
    , FieldThree 
order by FieldOne

如果你想合并不同的值,你可以使用 UNION ;如果你想合并联合选择的所有结果,你可以使用 UNION ALL 。

并对联合子选择中查询的使用进行“有点混乱”

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

         ) TT_A
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

         ) TT_B
  ) T 
group by  FieldOne
    , FieldTwo 
    , FieldThree 
order by FieldOne
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 MySQL 中的 UNION 查询中的多个字段求和? 的相关文章

随机推荐

  • 如何在并行进程(python)中将项目追加到列表中?

    这是我正在使用的更复杂代码的一个非常简单的版本 问题是我想将 method 函数中计算的项目附加到稍后可以显示的某个列表中 但是 当运行此代码时 列表对象为空 而结果数组已满 import multiprocessing as mp glo
  • Chrome 中意外的令牌默认值 ({}).default

    我收到错误 SyntaxError 意外的默认令牌 在 Chrome Opera 中的任何对象上获取或设置属性 默认 时 default 有人可以解释为什么会发生这种情况吗 upd 请大家注意 这对 FF 没有意义 因此在测试时您可能会错过
  • 选择未聚合的变量,功能上依赖于 GROUPing 变量

    背景 我正在一个非常受限的 T SQL 环境中工作 其中只能定义一个对象的 主体 VIEW 大概是 in CREATE VIEW My View AS 在引擎盖下 这是我的 VERSION https learn microsoft com
  • 如何获取多选框的所有选定值?

    我有一个
  • 从列表 PySpark 的列表中创建单行数据框

    我有一个这样的数据data 1 1 1 2 1 3 1 4 1 5 1 6 我想创建一个 PySpark 数据框 我已经使用了 dataframe SQLContext createDataFrame data features 但我总是得
  • 共享主机上的 403 禁止 Laravel

    我有一个共享主机 我正在尝试让我的 laravel 项目在其上运行 我正在使用 voyager 进行管理面板 我将我的应用程序公共文件夹放在 public html 中 并将项目的其余部分放在 public html 的同一级别上 所以它看
  • 从代理服务器后面调用 Web 服务

    我需要在将使用 Web 服务 XML SOAP 服务 的应用程序 C 中添加功能 现在 该应用程序可以 并且大部分 在具有代理服务器的企业环境中使用 我了解 SOAP 服务使用 HTTP 协议 因此应该使用端口 80 该端口通常保持打开状态
  • 如何在这个线性模型中强制删除截距或等效项?

    考虑下表 DB lt data frame Y rnorm 6 X1 c T T F T F F X2 c T F T F T T Y X1 X2 1 1 8376852 TRUE TRUE 2 2 1173739 TRUE FALSE 3
  • Laravel Model->save() 返回 false 但没有错误

    通常当我打电话时Model gt save 它成功地在数据库中创建了新记录 我正在尝试调试没有发生任何事情的情况Model gt save 返回假 我怎样才能知道发生了什么 user new User user gt fields exam
  • Confluence Schema 注册表持久化

    我希望即使服务器重新启动也能够保留具有固定 id 的模式 是否可以将架构保留在架构注册表中 以便在服务器崩溃后使它们具有相同的 id 否则 当模式注册服务器启动时 是否可以对具有固定 id 的模式进行硬编码 这就是模式注册的目的 模式有一个
  • Whatsapp消息自动回复方法

    我在play store上看到很少有应用程序支持WhatsApp的自动回复 我在网上搜索了方法 但我找到的只是这段代码 Uri uri Uri parse smsto 99 Intent i new Intent Intent ACTION
  • Jquery 延迟加载回调

    我目前正在使用Jquery 延迟加载 http www appelsiini net projects lazyload我想知道当我的容器中的所有图像结束加载时 当延迟加载发挥了所有魔力时 是否有一种方法可以进行回调 原因是我正在使用jSc
  • 如何将虚拟机组合到 Aurelia 验证渲染器中的视图中

    我正在尝试使用 aurelia validation 插件对表单执行验证 我正在创建一个自定义验证渲染器 它将更改输入框的颜色并在框旁边放置一个图标 单击或悬停该图标时 会出现一条弹出消息 其中显示实际的错误消息 目前 我正在渲染器中手动渲
  • 在 django 中处理动态 MultipleChoiceField

    到目前为止我看到的所有答案都让我感到困惑 我制作了一个根据传入的参数以及数据库中存储的问题动态构建的表单 这一切都工作正常 注意 它不是一个 ModelForm 只是一个 Form 现在我正在尝试保存用户的响应 我如何迭代他们提交的数据以便
  • SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier”

    给出以下代码 struct CopyButtonStyle ButtonStyle init func makeBody configuration Configuration gt some View let copyIconSize C
  • SQL 比较每小时总订单并删除当前库存可能吗?

    不确定是否可以单独使用 sql 来完成此操作 但我宁愿询问然后向流程添加另一个步骤 比如说我有一组虚拟订单 Supplier Destination Req Time Prd Code Prd Description Qty A B 01
  • 什么是日志记录?如何使用 Apache Commons 日志记录?

    Web 应用程序服务器希望记录哪些信息 为什么 据我了解 org apache commons logging Log 是一个抽象了其他Logging类提供的功能的接口 这同样适用于接口LogFactory 我试图理解的代码有 Log au
  • jQuery Mobile:页面事件触发的顺序是什么?

    我必须快速构建应用程序的原型 并且我想确切地知道在哪里插入各种应用程序逻辑 您能否迭代使用 PhoneGap 和 jQueryMobile 时的事件及其触发顺序 如果能够清楚地了解以下事件 顺序 那就太好了 A 当您第一次打开应用程序时 B
  • 在 gradle-node-plugin 中配置 nodeModulesDir

    我尝试设置 npm 包的缓存 这是我的插件配置 node version 4 5 0 npmVersion 3 10 6 distBaseUrl https nodejs org dist download true workDir fil
  • 如何对 MySQL 中的 UNION 查询中的多个字段求和?

    我目前正在学习如何使用MySQL在查询中我陷入了两难的境地 目前 我有 2 个查询从多个表中获取数据 两个查询都包含相同数量的列字段和字段名称 为简单起见 查询的输出如下所示 查询一 FieldOne FieldTwo FieldThree