SQL查询组

时间:2014-10-22 01:42:30

标签: sql

使用w3schools database,列出具有以下列的每个国家/地区的订单信息(请参阅[]中针对每列的提示/注释),并按TotalOrderAmount值按降序对数据进行排序。

•国家
•OrderCount [每个国家/地区的订单数量]
•ItemCount [每个国家/地区的所有产品数量的总和]
•TotalOrderAmount [每个国家/地区所有订单的总订单价值,四舍五入到小数点后两位] •AvgOrderSize [TotalOrderAmount / OrderCount,四舍五入到两位小数]

我有以下骨架,但我仍然坚持如何按国家分组.. 已编辑 - 错误1:无法准备声明(1无此列:TotalOrderAmount)

SELECT 
s.Country, COUNT(od.OrderID) AS OrderCount, sum(od.quantity) AS ItemCount, ROUND(sum(od.quantity*p.price),2) AS TotalOrderAmount, Avg(TotalOrderAmount/OrderCount)

FROM    Suppliers AS s

JOIN    Products AS p 
    ON p.SupplierID = s.SupplierID
JOIN     OrderDetails AS od
    ON od.ProductID = p.ProductID
JOIN     Orders AS o
    ON o.OrderID = od.OrderID

Group by s.Country

任何帮助表示赞赏!谢谢

2 个答案:

答案 0 :(得分:0)

首先我建议你删除s.County之后的尾随逗号,将s.County重命名为s.Country并在sum()聚合函数中添加一些东西

我猜Avg(TotalOrderAmount / OrderCount)无效,因为没有名为TotalOrderAmount的列。您需要将表达式替换为TotalOrderAmount(ROUND(sum(od.quantity * p.price),2)),因为它不作为列存在

并且没有订单计数列,所以你需要为此做同样的事情

答案 1 :(得分:-1)

在组中,您必须在查询中包含所有列。