【问题标题】:SUM () ,CROSS JOIN QuerySUM () ,CROSS JOIN 查询
【发布时间】:2015-02-11 07:44:22
【问题描述】:

我使用 SUM 和 CROSS JOIN 进行 MYSQL 查询,它工作正常。

MYSQL 查询:

SELECT SUM(totexec/(pass_count+fail_count))/d.total  COUNT FROM test_schedule CROSS JOIN ( SELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' ) d WHERE project='JupiterQA'

但我试图在 MSSQL 中执行相同的查询,以显示“列 'd.total' 在选择列表中无效,因为它既不包含在聚合函数或 GROUP BY 子句中。”

之后,我在查询末尾添加了 GROUP BY a.total, 错误是: 遇到除以零错误。

我的表里都有记录,是不是查询错了?

【问题讨论】:

  • 必须a.total d.total 分组吗?
  • 我只有别名 d,所以我使用的是 d.total。但是 a.total?
  • 在您的问题“GROUP BY a.total”中。
  • 抱歉,只有 d.total

标签: mysql sql-server cross-join mssql-jdbc


【解决方案1】:

我不问你为什么使用交叉连接 :D 只需在查询中添加一个 group by 子句

SELECT SUM(totexec(pass_count+fail_count))d.total  COUNT FROM test_schedule CROSS JOIN ( SELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' ) d WHERE project='JupiterQA' GROUP BY d.total

【讨论】:

  • 我添加了 GROUP BY d.total 之后才出现错误。我提到了上面的问题本身。
  • 好吧,你为什么要使用斜线? mssql 可能会将其解释为除以 d.total
  • 正在做除法运算,没有斜线怎么做除法运算?
【解决方案2】:

这应该相当于MYSQL查询:

SELECT tSum / dTotal AS COUNT
FROM (
   SELECT SUM(totexec / (pass_count+fail_count)) AS tSum, d.total AS dTotal 
   FROM test_schedule 
   CROSS JOIN ( SELECT COUNT(*) total 
                FROM test_schedule 
                WHERE project='JupiterQA' ) d 
   WHERE project='JupiterQA' ) t

不过,我认为不需要CROSS JOIN。这也应该做的工作:

SELECT tSum / ( SELECT COUNT(*) 
                FROM test_schedule 
                WHERE project='JupiterQA' ) AS COUNT
FROM (
   SELECT SUM(totexec / (pass_count+fail_count)) AS tSum 
   FROM test_schedule 
   WHERE project='JupiterQA' ) t

【讨论】:

  • 它的抛出除以零错误,但我有数据
  • @user3114967 pass_count+fail_countSELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' 为零。
  • @user3114967 先在pass_count+fail_countSELECT COUNT(*) total ... 上进行选择,看看你得到了什么值。
  • sum (pass_count+fail_count) value is: 1432 SELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' value is :1257
  • @user3114967 如果你执行,你会得到什么:SELECT SUM(totexec / (pass_count+fail_count)) FROM test_schedule WHERE project = 'JupiterQA'?
猜你喜欢
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多