首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >满足两个条件的SQL查询

满足两个条件的SQL查询
EN

Stack Overflow用户
提问于 2017-11-23 00:02:32
回答 2查看 732关注 0票数 0

我对SQL很陌生,在设计了数据库之后,我遇到了一些查询方面的问题。我目前面临的问题是:“--至少订购了一个项目的客户名单,该项目的预期工期高于平均预期值。”

代码语言:javascript
复制
    SELECT Customer.name
    FROM Project, Customer
    WHERE Project.c_id = Customer.c_id AND Project.exp_duration > AVG(Project.exp_duration)

我试图实现这段代码,但我一直收到以下错误消息:“聚合可能不会出现在WHERE子句中,除非它位于包含在HAVING子句或select列表中的子查询中,并且正在聚合的列是外部引用。”有人能帮我吗?我考虑过使用联接,但我也不能让它起作用。提前感谢!

EN

Stack Overflow用户

回答已采纳

发布于 2017-11-23 01:08:59

将表变量(@Project & @Customer)替换为真正的表(Project & Customer)。

代码语言:javascript
复制
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)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47445650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档