查找总成本低于平均 SQL
Posted
技术标签:
【中文标题】查找总成本低于平均 SQL【英文标题】:Finding the total cost less than the average SQL 【发布时间】:2021-06-01 04:08:05 【问题描述】:我对数据库很陌生。我正在努力学习它。我了解它的基础知识,但是当这些问题出现时,我会傻眼。我在下面附上了逻辑模型、问题和我尝试过的内容。
问题是这样的: 列出总成本低于所有人平均总成本的已完成租船合同 章程。包机的总成本是通过将每小时包机成本乘以 从航段实际出发和实际到达时间获得的实际持续时间。一种 完成包机意味着所有航段都已飞行。 显示包机号码、客户号码、客户姓氏、客户名字、包机总费用。这 总包机费用应四舍五入到小数点后两位数,并以 $ 符号显示 例如1234.56 美元 对于此问题,如果任一客户端名称为空,则应显示“-”。 列表应按总包机费用的降序显示。
我试过了,但是好像没用。
SELECT
chart.charter_nbr,
client_nbr,
client_lname,
client_fname,
chart.charter_cost_per_hour * (leg.cl_ata - leg.cl_atd) as TotalCharterCost
FROM
mh.charter chart
JOIN mh.client cli ON chart.client_nbr = cli.client_nbr
JOIN mh.charter_leg leg ON chart.charter_nbr = leg.charter_nbr
WHERE
TotalCharterCost < (SELECT
AVG(cost)
FROM
mh.charter chart1
JOIN mh.charter_leg leg1 ON chart1.charter_nbr = leg1.charter_nbr
WHERE
cost = (leg1.cl_ata - leg1.cl_atd) * chart1.charter_cost_per_hour
);
任何人都可以指导我或帮助我吗?我还在学习,对数据库还很陌生
【问题讨论】:
你好 Rana,欢迎来到 ***。一个好的起点是这个链接***.com/help/minimal-reproducible-example。在您的情况下,给出答案是一个挑战,因为...您提供了数据模型(作为图片)和 sql 查询,但是...没有创建表的脚本,也没有创建最小数据集的脚本。乍一看,这个语法是不正确的:...TotalCharterCost < (SELECT ...
【参考方案1】:
列别名(“TotalCharterCost”)不能用于 WHERE 子句。 AVG 语句也是不正确的。 先单独运行查询,然后再尝试将它们放在一起:
SELECT
chart.charter_nbr,
client_nbr,
client_lname,
client_fname,
chart.charter_cost_per_hour * (leg.cl_ata - leg.cl_atd) as TotalCharterCost
FROM
mh.charter chart
JOIN mh.client cli ON chart.client_nbr = cli.client_nbr
JOIN mh.charter_leg leg ON chart.charter_nbr = leg.charter_nbr
WHERE
chart.charter_cost_per_hour * (leg.cl_ata - leg.cl_atd) < (SELECT
AVG( chart1.charter_cost_per_hour * (leg1.cl_ata - leg1.cl_atd) )
FROM
mh.charter chart1
JOIN mh.charter_leg leg1 ON chart1.charter_nbr = leg1.charter_nbr
);
【讨论】:
以上是关于查找总成本低于平均 SQL的主要内容,如果未能解决你的问题,请参考以下文章