【问题标题】:how to use the order by and aggregate function together in sql query如何在sql查询中同时使用order by和聚合函数
【发布时间】:2011-02-19 11:41:11
【问题描述】:
SELECT
    count(distinct req.requirementid),
    req.requirementid,
    org.organizationid,
    req.locationofposting,
    org.registereddate
FROM OrganizationRegisteredDetails AS org,
    RequirementsDetailsforOrganization AS req
WHERE org.organizationid = req.requirementid
ORDER BY
    org.RegisteredDate desc

这显示了错误:

列 'RequirementsDetailsforOrganization.RequirementID' 在选择列表中无效,因为 它不包含在任何一个 聚合函数或 GROUP BY 子句。

如何在此查询中执行 'order by org.RegisteredDate desc' ....

请帮帮我.....??????

【问题讨论】:

  • 您正在尝试计算不同的需求 ID 并将它们发送到 SELECT 列表中 - 这是行不通的。您希望结果是什么样的?
  • 您正在尝试使用 Count 功能,因此您的查询需要与所有字段进行分组(分组依据)。那么,你想用查询和计数器实现什么?

标签: sql sql-order-by aggregate-functions


【解决方案1】:

您需要将SELECT 列表或ORDER BY 中引用的所有列添加到GROUP BY 子句中。

SELECT 
    count(distinct req.requirementid), 
    req.requirementid, 
    org.organizationid, 
    req.locationofposting, 
    org.registereddate 
FROM OrganizationRegisteredDetails AS org, 
    RequirementsDetailsforOrganization AS req 
WHERE org.organizationid = req.requirementid 
GROUP BY
    req.requirementid, 
    org.organizationid, 
    req.locationofposting, 
    org.registereddate 
ORDER BY 
    org.RegisteredDate desc 

尽管在这种情况下,您只会在所有行的第一列中获得值 1,因为您是根据 req.requirementid 进行分组的!

【讨论】:

  • +1,请记住,选择列表中返回的每一列必须是聚合函数调用或 GROUP BY 列表中的项目。
【解决方案2】:

存在错误,因为根据规则,当您使用带有 group by 子句的聚合函数时,您必须包含选择列表中的列

以下可能会帮助您实现您想要的功能

   (select count(distinct requirementid),requirementid,
     from 
    RequirementsDetailsforOrganization
    group by requirementid) d

    inner join 

    (   SELECT req.requirementid, org.organizationid,

req.locationofposting,org.registereddate FROM OrganizationRegisteredDetails AS org, 

RequirementsDetailsforOrganization AS req WHERE org.organizationid =req.requirementid order by org.RegisteredDate desc) d1
   on 
    d.requirementid= d1.requirementid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2016-09-07
    • 2022-01-01
    • 2021-11-17
    相关资源
    最近更新 更多