我对SQL很陌生,在设计了数据库之后,我遇到了一些查询方面的问题。我目前面临的问题是:“--至少订购了一个项目的客户名单,该项目的预期工期高于平均预期值。”
SELECT Customer.name
FROM Project, Customer
WHERE Project.c_id = Customer.c_id AND Project.exp_duration > AVG(Project.exp_duration)我试图实现这段代码,但我一直收到以下错误消息:“聚合可能不会出现在WHERE子句中,除非它位于包含在HAVING子句或select列表中的子查询中,并且正在聚合的列是外部引用。”有人能帮我吗?我考虑过使用联接,但我也不能让它起作用。提前感谢!
发布于 2017-11-23 01:08:59
将表变量(@Project & @Customer)替换为真正的表(Project & Customer)。
DECLARE @Project TABLE
(
p_id INT,
exp_duration DECIMAL(18,2),
c_id INT
)
DECLARE @Customer TABLE
(
c_id INT,
name VARCHAR(20)
)
INSERT @Project VALUES (1, 10, 1), (2, 5, 1), (3, 20, 1), (4, 10, 2), (5, 15, 2), (6, 20, 1)
INSERT @Customer VALUES (1, 'C1'), (2, 'C2')
-- average duration
-- SELECT AVG(exp_duration) FROM @Project
SELECT DISTINCT C.name
FROM @Customer C INNER JOIN @Project P ON C.c_id = P.c_id
WHERE p.exp_duration > (SELECT AVG(exp_duration) FROM @Project)https://stackoverflow.com/questions/47445650
复制相似问题