平均售价中的Mysql排序语句

Posted

技术标签:

【中文标题】平均售价中的Mysql排序语句【英文标题】:Mysql sorted statement in average sale price 【发布时间】:2020-11-30 01:40:48 【问题描述】:

编写一 (1) 个 mysql 查询语句,返回在 该机构开展业务的每个州的过去一个月。结果应该从高到高排序 最低的平均售价。您的查询应返回以下格式的表 我试过了

select * from(
select   avg(sale_price)  from  purchase where property_id = 64
union all  (
select   avg(sale_price)  from  purchase where property_id = 60)
union (
select avg(sale_price) from purchase where property_id = 58))  as i
order by  sale_price  ASC;

我收到此错误,因为我的表中有 sale_price 列

22:08:19 select * from( select avg(sale_price) from purchase where property_id = 64 union all ( select avg(sale_price) from purchase 其中 property_id = 60) union ( select avg(sale_price) from purchase 其中 property_id = 58)),因为我按 sale_price ASC LIMIT 0 订购, 1000 错误代码:1054. 'order' 中的未知列 'sale_price' 子句' 0.000 秒

【问题讨论】:

样本数据和预期结果将帮助您了解问题——以及其他任何愿意提供帮助的人。 你试过“按我订购”吗? 正如@RobMoll 所说,按1 订购 【参考方案1】:

您应该在每个 UNION 的 SELECT 子句中使用别名。

SELECT 
  * 
FROM
  (SELECT 
    AVG(sale_price) AS sale_price 
  FROM
    purchase 
  WHERE property_id = 64 
  UNION
  ALL 
  (SELECT 
    AVG(sale_price)  AS sale_price 
  FROM
    purchase 
  WHERE property_id = 60) 
  UNION
  (SELECT 
    AVG(sale_price)  AS sale_price
  FROM
    purchase 
  WHERE property_id = 58)) AS i 
ORDER BY sale_price ASC ;

或者您可以使用以下查询吗?我认为这在性能方面更直接。

SELECT 
  AVG(sale_price) AS avg_sale_price 
FROM
  purchase 
WHERE property_id IN (64, 60, 58) 
GROUP BY property_id 
ORDER BY avg_sale_price ;

【讨论】:

以上是关于平均售价中的Mysql排序语句的主要内容,如果未能解决你的问题,请参考以下文章

列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序(用sql语句来表达)。

MySQL数据库的高级SQL语句!

MySQL数据库的高级SQL语句!

sql按某个字段值顺序排序

MySQL排序原理与案例分析

mysql使用sql语句根据经纬度计算距离排序