gpt4 book ai didi

sql - 如何计算列的平均值然后将其包含在oracle的选择查询中?

转载 作者:行者123 更新时间:2023-12-03 10:59:19 26 4
gpt4 key购买 nike

我的 table 是——

create table mobile
(
id integer,
m_name varchar(20),
cost integer
)

这些值是——
insert into mobile values(10,'NOkia',100);
insert into mobile values(11,'Samsung',150);
insert into mobile values(12,'Sony',120);

我知道如何计算列成本的平均值,我的代码是——
 select avg(cost) from mobile;

结果是 123

但我想计算平均值,然后也显示差异。我能够做到这一点,但是,我无法在选择查询中添加 avg 列--

我的代码是---
SELECT id, m_name as "Mobile Name", cost as Price,avg(cost) as Average,
cost-(select avg(cost) from mobile) as Difference FROM mobile
group by id,m_name,cost;

输出是——
id      Mobile Name   Price  Average  Difference 
10 Nokia 100 100 -23
11 Samsung 150 150 27
12 Sony 120 120 -3

我想要的是纠正这个平均列..我想要这个---
id      Mobile Name  Price  Average  Difference 
10 Nokia 100 123 -23
11 Samsung 150 123 27
12 Sony 120 123 -3

请帮忙...

最佳答案

由于您使用的是 Oracle,您应该能够使用 AVG() 作为分析(窗口)函数:

SELECT id, m_name AS "Mobile Name" cost AS Price, AVG(cost) OVER( ) AS Average
, cost - AVG(cost) OVER ( ) AS Difference
FROM mobile

不需要子查询或 GROUP BY。

关于sql - 如何计算列的平均值然后将其包含在oracle的选择查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com