![](/img/trans.png)
[英]How to compare rows in a table and keep the highest values in the row in Oracle
[英]How to calculate a static average value of all rows in a Table to compare individual row values to in Oracle SQL
我需要计算表中所有行的静态平均值,以比较单个行的值。 到目前为止,这是我想出的:
SELECT i.ITEM_NAME, i.ITEM_PRICE
FROM ITEM i
GROUP BY i.ITEM_NAME, i.ITEM_PRICE
HAVING i.ITEM_PRICE > AVG(i.ITEM_PRICE)
ORDER BY i.ITEM_PRICE DESC, i.ITEM_NAME ASC;
我的问题是,正被用于比较行的平均ITEM_PRICE
对被计算只说行的ITEM_PRICE
(平均一个号码)。 无论如何,在该查询中是否可以获取所有行的ITEM_PRICE
的静态平均值,以将每行的单个ITEM_PRICE
与之进行比较? 我认为问题可能出在GROUP BY
关联值的方式上,但我不确定。
由于您只想计算所有行的平均值,因此可以放弃分组,而仅使用WHERE
子句将价格与平均值进行比较。 代码类似于:
select item_name, item_price
from item
where item_price > (select avg(item_price) from item)
order by item_price desc, item_name asc
当然,这假设一个item_name
仅一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.