【问题标题】:SQL confusion with the groupby functionSQL 与 groupby 函数的混淆
【发布时间】:2018-11-28 21:31:48
【问题描述】:
SELECT  customers.CompanyName,
    customers.ContactName,
    customers.phone,
    customers.country,
    SUM(orders.Freight) AS Total_Freight
FROM    CUSTOMERS INNER JOIN ORDERS
ON   customers.CustomerID = ORDERS.customerID 
WHERE orders.orderDate BETWEEN '1993-07-01' AND '1993-08-31' 
GROUP BY Orders.orderID, customers.CustomerID
ORDER BY customers.companyName

上面是我的代码,但我收到错误 列“CUSTOMERS.CompanyName”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

这是为什么呢?我哪里做错了?

The database

这是问题。

  1. 列出客户表中的公司名称、联系人姓名、电话号码和国家,以及订单日期在 1993 年 7 月 1 日至 1993 年 8 月 31 日之间的订单表中的运费总和。排序结果由公司名称设置。查询应生成下面列出的结果集。

    结果格式太乱了,我怀疑它对任何人都有帮助。

【问题讨论】:

  • 错误的哪一部分你不明白?这对我来说似乎很耳熟。
  • 对不起。我不明白如何解决它,因为我不太了解该组。
  • 我收到了同样的错误 :( "GROUP BY Orders.orderID, customers.CustomerID, customers.CompanyName"
  • 请注明您使用的是哪个数据库,但无论是哪个,它似乎都将customersCUSTOMERS 视为两个不同的表。

标签: sql


【解决方案1】:

像使用聚合函数一样使用分组中的所有选择列

 SELECT  customers.CompanyName,
        customers.ContactName,
        customers.phone,
        customers.country,
        SUM(orders.Freight) AS Total_Freight
    FROM    CUSTOMERS INNER JOIN ORDERS
    ON   customers.CustomerID = ORDERS.customerID 
    WHERE orders.orderDate BETWEEN '1993-07-01' AND '1993-08-31' 
    GROUP BY customers.CompanyName,
        customers.ContactName,
        customers.phone,
        customers.country
    ORDER BY customers.companyName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2020-11-23
    相关资源
    最近更新 更多