【问题标题】:Mysql sorted statement in average sale price平均售价中的Mysql排序语句
【发布时间】: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 订购

标签: mysql sql


【解决方案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 ;

【讨论】:

    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多