gpt4 book ai didi

sql - 不是 GROUP BY 表达式错误

转载 作者:行者123 更新时间:2023-12-04 17:52:32 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





ORA-00979 not a group by expression

(8 个回答)


7年前关闭。




我对数据库比较陌生。我正在使用 Oracle 并且我正在尝试实现此查询以查找成员已参加的个人培训类(class)的数量。

表是;

成员(member)

MEMBERS_ID(NUMBER),
MEMBERSHIP_TYPE_CODE(VARCHAR),
ADDRESS_ID(NUMBER), CLUB_ID(NUMBER)
MEMBER_NAME(VARCHAR),
MEMBER_PHONE(VARCHAR),
MEMBER_EMAIL(VARCHAR)

PERSONAL_TRAINING_SESSIONS
SESSION_ID(VARHCAR), 
MEMBER_ID (NUMBER),
STAFF_ID(VARCHAR),
SESSION_DATETIME(DATE)

我的查询正在返回此错误:

ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause:
*Action: Error at Line: 1 Column: 8


SELECT MEMBERS.MEMBER_ID,MEMBERS.MEMBER_NAME, COUNT(personal_training_sessions.session_id)
FROM MEMBERS JOIN personal_training_sessions
ON personal_training_sessions.member_id=members.member_id
GROUP BY personal_training_sessions.session_id;

任何人都可以指出我正确的方向吗?我环顾四周是否需要分离计数查询?

最佳答案

错误说明了一切,您没有按 MEMBERS.MEMBER_ID 分组和 MEMBERS.MEMBER_NAME .

SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
, COUNT(personal_training_sessions.session_id)
FROM MEMBERS
JOIN personal_training_sessions
ON personal_training_sessions.member_id = members.member_id
GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME

您需要每个成员的个人 session 数,因此您需要按成员信息进行分组。

基本的(当然它可以变得更复杂) GROUP BY, SELECT 查询是:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>

正如 Ken White 所说,聚合函数类似于 MIN() , MAX() , COUNT()等。您对所有未聚合的列进行 GROUP BY。

这仅在您的 MEMBERS 时才能按预期工作。表是唯一的 MEMBER_ID ,但根据您的查询,我怀疑是这样。为了澄清我的意思,如果您的表在 MEMBER_ID 上不是唯一的那么你没有计算每个 MEMBER_ID 的 session 数但每 MEMBER_ID 个 session 的数量并按照 MEMBER_NAME .如果它们是 1:1 的关系,那么实际上是同一件事,但如果您可以有多个 MEMBER_NAME s 每 MEMBER_ID那么它不是。

关于sql - 不是 GROUP BY 表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962772/

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