按分组的计算字段排序查询

CodeMed

MS Access 2010数据库中,我试图设计一个查询,该查询将返回按两个分组字段之和的比率排序的结果。但是到目前为止,我的尝试导致了立即的溢出错误,甚至在查询没有机会尝试运行之前。如何修复下面的代码,以便我的结果查询产生按计算字段排序的结果?

这是表结构:

Table1
    ID
    NAME

Table2
    ID
    SUBSET
    TOT

这是导致溢出对话框的查询:

SELECT [Table1].[NAME], SUM([Table2].[SUBSET]) As SubsetDays, 
    SUM([Table2].[TOT]) As TotalDays,
    ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4) As SubsetPercent 
  FROM [Table2] INNER JOIN [Table1] ON [Table2].ID = [Table1].ID 
  GROUP BY [Table1].[NAME] 
  ORDER BY ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4) DESC;

编辑#1

根据@TonyStark的评论,我尝试更改ORDER BY ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4) DESC;ORDER BY 4 DESC;,但是此更改仍然会导致溢出错误。我可以运行查询的唯一方法是ORDER BY完全删除该子句,这违背了此问题的目的。


编辑#2

我尝试了EvDev答案中建议的代码,但他的代码也仍然会导致相同的溢出错误。每个表中可能有2000行,尽管其中一个表有250个字段。数据类型是NAME的文本,SUBSET,TOT和ID的数字。

内维尔

从评论/故障排除中写出答案:

Access中的溢出通常是由零除以错误引起的。在您的查询中:

SELECT [Table1].[NAME], SUM([Table2].[SUBSET]) As SubsetDays, 
    SUM([Table2].[TOT]) As TotalDays,
    ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4) As SubsetPercent 
  FROM [Table2] INNER JOIN [Table1] ON [Table2].ID = [Table1].ID 
  GROUP BY [Table1].[NAME] 
  ORDER BY ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4) DESC;

您两次被除以SUM([Table2].TOT)一次在SELECT子句中,一次在ORDER BY子句中。

您可以调整这些公式以0在分母中寻找分母,以避免溢出错误。就像是:

iif(SUM([Table2].[TOT])=0, <some constant value>, ROUND( (SUM([Table2].[SUBSET]) / SUM([Table2].[TOT]) ) , 4))

删除ORDER BY子句时之所以不会引发错误,是因为Access不会为每条记录计算结果,除非它需要显示ORDER BY或某种其他预聚合类型的逻辑。如果您在运行不带ORDER BY子句的查询之后尝试对结果进行排序,那么您将收到溢出错误。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按分组字段排序

来自分类Dev

如何按计算字段排序?

来自分类Dev

在单个查询中按分组和排序

来自分类Dev

mysql查询分组/按计数排序

来自分类Dev

按类型分组计算层次查询的总和

来自分类Dev

按相似字段分组的嵌套选择查询

来自分类Dev

按相关字段值分组查询集

来自分类Dev

SQL Server查询按字段分组错误

来自分类Dev

SQL Server查询按字段分组错误

来自分类Dev

SQL Server查询按字段分组错误

来自分类Dev

按字段分组的 MySQL 子查询

来自分类Dev

在mysql中按查询选择分组并按查询排序

来自分类Dev

SQL获取按最新修改的行排序的分组字段

来自分类Dev

Rails查询联接,排序依据,按问题分组

来自分类Dev

按子句分组和排序中的SQL查询错误

来自分类Dev

MySQL子查询按特定字段分组和计数记录

来自分类Dev

按随机分组排序

来自分类Dev

MS Access:按计算字段排序(使用别名)

来自分类Dev

MS Access:按计算字段排序(使用别名)

来自分类Dev

通过按计算列排序优化SQLite查询?

来自分类Dev

如何通过外键按字段总和排序查询

来自分类Dev

Django按相关模型字段排序查询集

来自分类Dev

WordPress查询自定义日期字段按天排序

来自分类Dev

SQL查询按2个字段排序

来自分类Dev

在 Elstic 搜索中按字段长度对查询进行排序

来自分类Dev

按字段分组

来自分类Dev

Elasticsearch按字段分组

来自分类Dev

按FK字段分组

来自分类Dev

MongoDB使用排序查询结果中的位置来计算字段