使用 SUM(something) AS 时字段列表中的未知列

2024-01-03

我正在使用以下查询从表中获取 2 列的总和

SELECT a.user, b.user, SUM(a.post = b.post) AS common_p_count,
SUM(a.option = b.option) AS common_r_count,
(common_p_count+common_r_count)
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user

但我越来越未知列 common_p_count

我如何在此查询中使用 common_p_count 和 common_r_count 来获取排序结果?

Thanks


您不能选择在同一级别上定义的列SELECT条款。如果要重用表达式,则必须使用派生表:

SELECT x.*, (common_p_count+common_r_count)
FROM (
  SELECT 
    a.user AS a_user, 
    b.user AS b_user, 
    SUM(a.post = b.post) AS common_p_count,
    SUM(a.option = b.option) AS common_r_count
  FROM response a, response b
  WHERE a.user = '1' AND b.user != '1' group by b.user
) x

或者,当然,您只需重复该表达式:

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count,
  (SUM(a.post = b.post) + SUM(a.option = b.option))
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user

如果您只想按该表达式进行排序,那么无需任何技巧就可以实现(但您仍然不能SELECT与查询同一级别的表达式)

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
ORDER BY common_p_count + common_r_count

其原因在这篇博客文章中进行了解释 https://blog.jooq.org/2016/12/09/a-beginners-guide-to-the-true-order-of-sql-operations/

边注

当然,除了上述解释之外,我认为您的查询不正确。由于您仅按以下方式分组b.user,你会得到一个随机值a.user在我看来,你的总和可能是不正确的,并且你得到了一个意外的笛卡尔积。但这是另一个问题的主题。

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

使用 SUM(something) AS 时字段列表中的未知列 的相关文章

随机推荐

  • 更改 UINavigationBar 高度

    有人可以告诉我如何更改导航栏高度吗 这是我到目前为止所拥有的 CGFloat navBarHeight 10 self navigationController navigationBar frame size width navBarHe
  • 使用 EGit 进行合并会导致提交合并所做的所有更改

    我正在使用带有 EGit 的 Eclipse 并且我的 origin master 位于 github 上 这个项目有 3 名程序员工作 当我将更改拉到本地 git 使用 EGit 并且存在冲突时 我会解决它们 没有问题 问题是 当我提交时
  • 按值而非引用将对象属性复制到映射

    我不确定哪里出了问题 但似乎我无法从对象实例复制属性并将它们分配给映射 而在保存实例后不更改值 这是一个示例类 class Product String productName String proudctDescription int q
  • Django 中相同表单的两个不同的提交按钮

    我在 Django 中有一个 UpdateView 我只有一个普通的提交按钮 当对象正确更新时 它会通过以下方式重定向到对象列表success url 我可以制作两个不同的提交按钮 一个提交并重定向到对象列表页面 ListView 的按钮
  • 在 django 中通过一个查询获取多行?

    如何构建一个从 django 获取多行的 QuerySet 我认为 filter 会起作用 但它似乎更糟 例如 我在模型 Car 中有两行 具有两个文本属性 许可证和 vin 现在假设我想打印这些汽车的执照和车辆证明 我怎样才能通过一次数据
  • 使用 JavaFX 制作 Eclipse 插件? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我计划为 Eclipse 开发一组丰富的插件 其中涉及 Eclipse 内的 3D 图形渲染 JavaFX 是开发 Eclipse 插件的良好技
  • 如何在基于类的视图中返回 JSON 响应,而不是 HTTP 响应

    我有一个基于阶级的观点 我在引导模式上使用 Ajax 为了避免页面刷新 我想使用基于类的视图返回 JSON 响应而不是 HTTP 响应 但我只看到了如何为基于函数的视图返回 JSON 响应 视图 py from django contrib
  • 努力将 Objective C 选择器和目标签名转换为 Swift

    再会 我正在尝试将 Objective C 代码片段转换为 Swift 我知道选择器可以通过将其放入字符串中来直接翻译 但我无法理解 Objective C 签名 Objective C 选择器 第二个参数 UIImageWriteToSa
  • React Native FAILURE:构建失败并出现异常。无法解析“:classpath”。找不到 com.android.tools.build:gradle:3.0.1

    当我发出命令 react native run android 时 它发生了 失败 构建失败并出现异常 What went wrong A problem occurred configuring root project AsomePro
  • 同时写入同一个文件

    好的 我知道这个网站上有关于这个问题的类似问题 但是这些问题和提供的答案都不是我所需要的 我正在构建基于平面文件的 CMS 例如 如果 2 3 10 追加模式下的fwrite请求同时到达同一个php文件 contact form messa
  • 将变量声明为无符号的重要性

    如果您知道变量永远不应该为负数 那么将变量声明为无符号是否重要 它是否有助于防止除负数之外的任何内容被输入到不应该包含负数的函数中 将语义上非负值的变量声明为unsigned是一种良好的风格和良好的编程实践 但是 请记住 这并不能阻止您犯错
  • PHP 解析 .dat 文件

    我有一个 dat 文件 本质上是 分隔文件 我正在尝试将其转换为制表符分隔的 txt 我不确定的问题是新文件的每一行将是原始文件的 3 行的组合 每个原始行都有不同数量的数据 第一列仅标识分组中的每一行 最好的方法是什么 原始数据样本 01
  • python:如何在服务器端检测客户端断开连接?

    我正在用 python 进行套接字编程 我想在服务器端检测客户端套接字断开连接 Client socket connect host port try send something to server and get response fr
  • pandas 统计每个日期过去 7 天的值

    有两个数据框 首先是这样的 print df1 id date month is buy 0 17 2015 01 16 2015 01 1 1 17 2015 01 26 2015 01 1 2 17 2015 01 27 2015 01
  • Jetty 的 httpClient.setResponseBufferSize() 方法有什么作用吗?

    我正在使用 Jetty 的 HttpClient 构建一个简单的代理服务器 我在 Java 1 8 0 45 上使用 Jetty 版本 9 3 10 v20160621 我遇到过这样的情况 我对资源执行 GET 操作 该资源将返回大小约为
  • “<”附近的语法不正确

    我的任务是获取一些在 SQL Server 2012 上正常工作的代码 以便在 SQL Server 2008 R2 上也能正常工作 我收到这个错误 附加信息 当我尝试运行我的代码时 我发现这行 SQL 代码有问题 ALTER TABLE
  • Apollo Link 响应标头

    我在一个简单的 React 应用程序中使用最新版本的 Apollo Client 并尝试从响应中提取一个标头值 该标头值用于显示返回的记录集的大小 我意识到这不是提供结果集大小的最优雅的方式 但这就是 API 目前的设置方式 我希望使用中间
  • Keycloak 用户临时锁定的自定义消息

    我正在使用 Kyecloak 4 8 0 并为我的领域启用了暴力攻击 现在 每当用户提供错误凭据 3 次时 用户将被暂时锁定 但用户仍然会看到 无效的用户名 密码 根据这个帖子 Keycloak 是故意这样做的 https issues j
  • Google Cloud Storage 设置缓存控制并签名 URL 上传

    我们使用签名网址从浏览器上传 我无法弄清楚如何在上传时设置缓存控制标头 我们使用 gcloud node 库来签署网址 var bucket gcs bucket mybucket var file bucket file image jp
  • 使用 SUM(something) AS 时字段列表中的未知列

    我正在使用以下查询从表中获取 2 列的总和 SELECT a user b user SUM a post b post AS common p count SUM a option b option AS common r count c