Sql ORA-00937:不是单个组功能

Sql ORA-00937:不是单个组功能,sql,oracle,Sql,Oracle,为什么我不能在select语句中使用这些列?是否需要按c.CLIENT_ID、c.FNAME、c.LNAME使用该组函数组。如何解决这个问题 SELECT c.CLIENT_ID, c.FNAME, c.LNAME, COUNT(*) FROM RACE r JOIN VAGON v ON r.RACE_ID = v.RACE_ID

为什么我不能在select语句中使用这些列?是否需要按c.CLIENT_ID、c.FNAME、c.LNAME使用该组函数组。如何解决这个问题

 SELECT 
          c.CLIENT_ID, c.FNAME, c.LNAME, COUNT(*) 
            FROM 
              RACE r 
                JOIN VAGON v
                  ON r.RACE_ID = v.RACE_ID
                JOIN TICKET t
                  ON v.VAGON_ID = t.VAGON_ID
                JOIN CLIENT c
                  ON c.CLIENT_ID = t.CLIENT_ID
            WHERE r.DEPART_PLACE = 'Lviv' AND r.DESTINATION_PLACE = 'Kyiv';
            GROUP BY c.CLIENT_ID
            HAVING COUNT(*) >= 2

你自己回答的。是的,您需要在组中使用该列,或者在其上使用诸如min或max之类的聚合函数

为什么?

您知道该行由客户端ID设置为唯一,但数据库没有。因此,您必须告诉它,以便让它确定如何构造和执行查询


而且你应该把它去掉;"基辅"之后,

除表达式外,您选择的所有列都应添加到组中。 为什么?
因为group by以一种独特的方式工作。

在fname,lname上使用MAX。您是否尝试过自己的想法?使用c.CLIENT_ID,c.fname,c.lname这样的group by,它仍然不起作用定义:不起作用。相同的错误ORA-00937它起作用。主要问题是缺少分号,但奇怪的是,为什么数据库不知道客户机ID是唯一的。因为它是表客户机的主键,看起来没那么远。声明应该是自我解释的。