当前位置: 首页 > 面试题库 >

不是GROUP BY表达式错误[重复]

吕奇
2023-03-14
问题内容

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

ORA-00979不是按表达式分组 (8个答案)

6年前关闭。

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

这些表是;

会员

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:不是GROUP BY表达式00979。00000-“不是GROUP BY表达式” 原因:

操作:行错误:1列: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

您需要 每个 成员的个人会话 ,因此您需要按成员信息分组。

基本的(当然,它可以变得更加复杂)GROUP BY,SELECT查询是:

SELECT <column 1>, <column n>
     , <aggregate function 1>, <aggregate function n>
  FROM <table_name>
 GROUP BY <column 1>, <column n>

一个聚集函数之中,肯怀特说,像MIN()MAX()COUNT()等你GROUP BY 所有 未聚合的列。

如果您的MEMBERS表在上是唯一的MEMBER_ID,这将仅按预期工作,但是我怀疑是基于您的查询。为了澄清我的意思,如果你的表是不是唯一的MEMBER_ID,然后你不计算每会话数MEMBER_ID,但每个会话的数量MEMBER_ID

MEMBER_NAME。如果它们是1:1的关系,那么实际上是同一件事,但是如果MEMBER_NAME每个可以有多个s,MEMBER_ID则不是。



 类似资料:
  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 我目前正在尝试创建一个日志解析器,它从一个输入文件(a.log)中获取以下格式的一系列ping报告:(194.12.224.34中的64字节:icmp_seq=1 ttl=47 time=66.7 ms)并构建一个输出文件(a.csv)。 经过多次尝试,我发现了下面的错误。我的同事给了我他的代码(如下),虽然写得不同,但本质上是一样的。他的代码给出了同样的错误,尽管他的代码在同一个任务中正常工作。

  • 但是下面的代码工作得非常好。你能帮我找出原因吗?

  • 我正在使用石英调度程序来安排我的工作。我有一个错误的cron表达式: 当我这样做的时候: is。但是当我查看表达式时,它显然是错误的。其他人也面临类似的问题吗? 注:包装为:包装组织。石英 石英的版本是:2.2.3 请检查来自的CronExpression类http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3 我还尝试了类的方法,但

  • 问题内容: 我收到以下查询的ORA:00936错误。请让我知道查询中的问题 问题答案: SELECT convert(DATE,r.created_dt)作为created_dt 问题在于错误使用了 CONVERT 函数。请参阅文档。 我猜您正在尝试转换数据类型,可以使用 TO_DATE 将字符串转换为日期。或者, TO_CHAR 反之亦然。

  • 我有这个非常简单的打字稿文件: 然后我运行: 打字稿编译器(版本1.8.7,OS X)抱怨: 我如何修复这个错误?谢谢你。