一个例子:
SELECT AVG(cost)
FROM items
WHERE seller_id=6
让我们说我想找到卖家6的物品的平均成本和卖家10的物品的平均成本。但是我需要在一个SQL中完成。当我执行seller_id = 6 AND 7.它给出了平均成本6和7.但是我想要平均值6和7的平均值。
这是实际问题: 我们的订单有5个优先级:" 1-URGENT"," 2-HIGH"," 3-MEDIUM"," 4-NOT SPEC" ," 5-LOW"。哪种类型的订单的总价格总和最高?
我的sql:
SELECT SUM(o_totalprice)
FROM orders
WHERE `o_order-priority`='1-URGENT' AND '2-HIGH' AND "3-MEDIUM" AND "4-NOT SPEC" AND "5-LOW"
答案 0 :(得分:4)
SELECT seller_id,AVG(cost) FROM items
WHERE seller_id IN (6,10)
GROUP BY seller_id
如果您想要所有卖家,只需删除seller_id IN (6,10)
条款
<强> SQL Fiddle For 2 sellers 强>
<强> SQL Fiddle for all sellers 强>
根据您的问题编辑进行编辑
SELECT o_order-priority,
SUM(o_totalprice) as total
FROM orders
GROUP BY o_order-priority
ORDER BY total DESC
LIMIT 1
这会为您提供具有最大金额的o_order-priority
。如果你删除限制,那么就会给你所有优先级的总和。
答案 1 :(得分:0)
尝试使用seller_id对其进行分组。
SELECT seller_id, AVG(cost)
FROM items
WHERE seller_id in (6,10)
GROUP BY seller_id
答案 2 :(得分:0)
试试这个
SELECT seller_id, AVG(cost)
FROM items
WHERE seller_id in (6,7)
GROUP BY seller_id
答案 3 :(得分:0)
请试一试。
SELECT seller_id,AVG(cost)
FROM items
WHERE seller_id in (6,10)
group by seller_id
如果您需要所有卖家明智的AVERAGE成本,请尝试
SELECT seller_id,AVG(cost)
FROM items
group by seller_id
答案 4 :(得分:-1)
在我发布代码之前的一点理论
使用像avg,sum等聚合函数时,您需要了解平均值将在特定组上计算。如果你想找到女孩和男孩的平均分数,那么分组是基于性别的。同样在你的情况下,你想找到卖家6的平均值,所以基本上你首先需要根据他们的卖家ID形成卖家组。
现在,当您组建了组时,选择卖家ID为6的组 现在您的查询更改为
SELECT AVG(cost)
FROM items
WHERE seller_id=6 << Selecting the group
GROUP BY seller_id << Making groups.
如果您想了解我的所作所为,请尝试运行此查询
Select AVG(COST),seller_id
From ITEMS
GROUP BY seller_id
这将返回所有卖家的平均成本和seller_id。
希望这会有所帮助。
注意:使用聚合函数时,应始终附加group by子句,并且所选列也必须在group by子句中。如果您选择了更多的列,并且group by子句中的列数更少,则会导致错误。
对于您的第二个问题,此查询将起作用
Select MAX(SUM(o_total_price))
FROM ORDERS
GROUP BY o_order-priority
同样的理论,对列进行分组,然后在每个组中查找总和,然后选择组中的最大总和。