Mysql语法错误

时间:2014-12-02 06:09:54

标签: mysql sql phpmyadmin group-by

一个例子:

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"

5 个答案:

答案 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

同样的理论,对列进行分组,然后在每个组中查找总和,然后选择组中的最大总和。