标签: ora-00979

GROUP BY with MAX(DATE)

我正在尝试列出表格中每列火车的最新目的地(最近出发时间),例如:

Train    Dest      Time
1        HK        10:00
1        SH        12:00
1        SZ        14:00
2        HK        13:00
2        SH        09:00
2        SZ        07:00
Run Code Online (Sandbox Code Playgroud)

期望的结果应该是:

Train    Dest      Time
1        SZ        14:00
2        HK        13:00
Run Code Online (Sandbox Code Playgroud)

我试过用

SELECT Train, Dest, MAX(Time)
FROM TrainTable
GROUP BY Train
Run Code Online (Sandbox Code Playgroud)

我得到了一个"ora-00979不是GROUP BY表达式"错误,说我必须在我的分组中包含'Dest'语句.但肯定不是我想要的......

是否可以在一行SQL中执行此操作?

sql oracle group-by greatest-n-per-group ora-00979

140
推荐指数
6
解决办法
31万
查看次数

ORA-00979不是按表达式分组

我通过以下查询获得ORA-00979:

SELECT cr.review_sk, cr.cs_sk, cr.full_name,
tolist(to_char(cf.fact_date, 'mm/dd/yyyy')) "appt",
cs.cs_id, cr.tracking_number
from review cr, cs, fact cf
where cr.cs_sk = cs.cs_sk
and UPPER(cs.cs_id) like '%' || UPPER(i_cs_id) || '%'
and row_delete_date_time is null
and cr.review_sk = cf.review_wk (+)
and cr.fact_type_code (+) = 183050
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number
ORDER BY cs.cs_id, cr.full_name;
Run Code Online (Sandbox Code Playgroud)

我找不到在同一查询中同时包含GROUP BY和ORDER BY子句的任何示例.我尝试一次一个地从组中删除每个字段,但仍然得到相同的错误.

sql oracle ora-00979

138
推荐指数
4
解决办法
37万
查看次数

SQL GROUP BY - 使用COUNT()函数

我一直在做一项涉及为医院创建数据库的任务,而且我遇到了一个非常令人沮丧的错误,无论我做了多少研究,我都无法解决这个问题.

我收到的错误是:

第1行的错误:ORA-00979:不是GROUP BY表达式

我插入值的代码结构是:

SELECT  CONSULTANT.S_NO, DOCTOR.D_NAME, CONSULTANT.SPEC, 
PATIENT.P_ID, PATIENT.P_NAME, COUNT(CONSULTANT.P_ID)
FROM    PATIENT, CONSULTANT, DOCTOR                            
WHERE   PATIENT.P_ID = CONSULTANT.P_ID
AND     CONSULTANT.S_NO = DOCTOR.S_NO
GROUP BY CONSULTANT.S_NO;
Run Code Online (Sandbox Code Playgroud)

我的表的结构是:

    CREATE TABLE PATIENT (
    P_ID        NUMBER NOT NULL,
    P_NAME      CHAR(20),
    ADDRESS     VARCHAR(20),
    DOB     DATE,
    WARD_NO     NUMBER NOT NULL, 
    C_S_NO      NUMBER NOT NULL,
    CONSTRAINT PK_PATIENT PRIMARY KEY(P_ID)
);

CREATE TABLE DOCTOR (
    S_NO        NUMBER NOT NULL,
    D_NAME      CHAR(20),
    APP_DATE    DATE,
    CONSTRAINT PK_DOC PRIMARY KEY(S_NO)
);

CREATE TABLE CONSULTANT (
    S_NO        NUMBER NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

sql oracle group-by ora-00979

9
推荐指数
1
解决办法
3万
查看次数

查询适用于Oracle 10g但不适用于11g?

DECLARE
  trn  VARCHAR2(2) := 'DD';
  cur  SYS_REFCURSOR;
BEGIN
  OPEN cur FOR
    SELECT
      TRUNC(some_date, trn),
      NULL AS dummy_2,
      COUNT( DISTINCT dummy_1 )
    FROM
      (SELECT SYSDATE AS some_date, ROWNUM AS dummy_1 FROM dual)
    GROUP BY
      TRUNC(some_date, trn);
END;
Run Code Online (Sandbox Code Playgroud)

这适用于Oracle 10,但Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production结果如下:

ORA-00979:不是GROUP BY表达式
ORA-06512:第5行


任何人都可以复制/解释这个吗?谢谢!

sql oracle plsql oracle11g ora-00979

7
推荐指数
1
解决办法
8381
查看次数

SQL Group By函数(列) - 现在无法选择该列

我在Oracle Express中使用了HR员工架构,我想选择在特定年份雇用的员工.

  SELECT hire_date, 
         COUNT(*)
    FROM employees empl
GROUP BY SUBSTR(hire_date, -4)
ORDER BY empl.hire_date;
Run Code Online (Sandbox Code Playgroud)

hire_date列的格式为"1/1/2011",所以我想通过提取最后四个字符对它们进行分组.

问题是,我遇到了以下错误

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 1 Column: 7
Run Code Online (Sandbox Code Playgroud)

这不可能吗?

sql oracle aggregate-functions ora-00979

7
推荐指数
2
解决办法
7375
查看次数

ORA-00979:不是带有简单示例的GROUP BY表达式

我在Oracle 11g中尝试了以下示例:http://joshualande.com/filters-joins-aggregations/

SELECT c.recipe_name, 
COUNT(a.ingredient_id), 
SUM(a.amount*b.ingredient_price)
FROM recipe_ingredients a
JOIN ingredients b
ON a.ingredient_id = b.ingredient_id
JOIN recipes c
ON a.recipe_id = c.recipe_id
GROUP BY a.recipe_id;
Run Code Online (Sandbox Code Playgroud)

我得到SQL错误: ORA-00979: not a GROUP BY expression...

查询中使用的表如下:

CREATE TABLE recipes (
  recipe_id INT NOT NULL,
  recipe_name VARCHAR(30) NOT NULL,
  PRIMARY KEY (recipe_id),
  UNIQUE (recipe_name)
);

INSERT INTO RECIPES (RECIPE_ID, RECIPE_NAME) VALUES (1, 'Tacos');
INSERT INTO RECIPES (recipe_id, recipe_name) VALUES (2, 'Tomato Soup');
INSERT INTO RECIPES (recipe_id, recipe_name) VALUES (3, 'Grilled …
Run Code Online (Sandbox Code Playgroud)

sql oracle group-by oracle11g ora-00979

6
推荐指数
1
解决办法
799
查看次数

'group by'适用于MySQL,但不适用于Oracle

我有一个适用于MySQL的查询但不适用于Oracle,我正在尝试转换.这是我的表:

unique_row_id  http_session_id  page_name   page_hit_timestamp
----------------------------------------------------------------
0              123456789        index.html  2010-01-20 15:00:00
1              123456789        info.html   2010-01-20 15:00:05
2              123456789        faq.html    2010-01-20 15:00:15
3              987654321        index.html  2010-01-20 16:00:00
4              987654321        faq.html    2010-01-20 16:00:05
5              987654321        info.html   2010-01-20 16:00:15
6              111111111        index.html  2010-01-20 16:01:00
7              111111111        faq.html    2010-01-20 16:01:05
8              111111111        info.html   2010-01-20 16:01:15
Run Code Online (Sandbox Code Playgroud)

SQL是

select http_session_id, unique_row_id, page_name, page_hit_timestamp 
from page_hits 
group by http_session_id;
Run Code Online (Sandbox Code Playgroud)

在MySQL上,这将返回3行(每个唯一的http_session_id一行).

在Oracle上,我得到一个"ORA-00979:不是GROUP BY表达式"错误.我也尝试过与众不同,但我无法让它发挥作用.

为了清楚 - 我想要一个ResultSet,每个唯一的http_session_id包含一行.unique_row_id最好是最大值(例如http_session_id = 123456789为2),但这并不重要.

我快要把它分成多个单独的sql语句(一个"select distinct http_session_id",另一个迭代所有这些并选择max(unique_row_id).任何指针都会被感激地收到 - 我很想避免这个!

Rgds,凯文.

mysql oracle plsql group-by ora-00979

4
推荐指数
1
解决办法
3363
查看次数

Grails groupProperty和订单.这个怎么运作?

我有这个域名:

class Participation {
   ParticipationStatus status
}
class ParticipationStatus{
   String name
   Date creationDate
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个查询:

Participation.createCriteria().list{
   createAlias("status","statusAlias")
   order "statusAlias.creationDate"
   projections{
     groupProperty "id"    
   }
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:引起:java.sql.SQLException:ORA-00979:N'est pas une expression GROUP BY

我2天前在这个查询grrrr上工作了!;-)

非常感谢

grails grails-orm ora-00979

4
推荐指数
1
解决办法
5586
查看次数

ORA-00979:不是GROUP BY表达式问题

我正在执行以下请求,我得到一个"ORA-00979:不是GROUP BY表达式"错误.

select distinct 
field1, 
field2, 
field3, 
count(*) as field4, 
field5, 
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as field7, 
field8, 
field9, 
field10,
field11, 
field12, 
field13
from (<here a big sub query>) A
group by field1, field2
order by field1, field2
Run Code Online (Sandbox Code Playgroud)

我知道我必须将SELECT的所有列放在GROUP BY语句中,除了分组函数(如MAX或SUM),所以我正在尝试以下查询但是我收到相同的错误消息:

select distinct 
field1, 
field2, 
field3, 
count(*) as field4, 
field5, 
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g ora-00979

2
推荐指数
1
解决办法
9604
查看次数

MAX查询的SQL帮助

我有一个名为bbc的国家/地区表(名称,地区,地区,人口,gdp)

我想要一张表格,其中列出了按地区划分的最大(人口最多)国家的地区,名称和人口.到目前为止,我已经尝试过这个:

SELECT region, name, MAX(population)
FROM bbc
GROUP BY region
Run Code Online (Sandbox Code Playgroud)

它给了我一条错误消息:ORA-00979:不是GROUP BY Expression

我试图更改为GROUP BY区域,名称,但它没有给我正确的表格

sql oracle aggregate-functions ora-00979

2
推荐指数
1
解决办法
1310
查看次数

ORA-00979,但我在GROUP BY语句中的SELECT中有元素

我有一个类似这样的查询:

SELECT field1,
       field2,
       field3,
       field4,
       field5,
       field6,
       field7,
       field8,
       field9,
       count(field9)
  FROM REPORT_TABLE
       LEFT JOIN
       DATAMINE
         USING (REPORT_ID)
 WHERE field1 LIKE 'MatchingText%'
   AND TS_START between to_date('2015-05-01', 'YYYY-MM-DD') and to_date('2015-06-06', 'YYYY-MM-DD') + 0.99999999
GROUP BY field9,
         1,
         2,
         3,
         4,
         5,
         6,
         7,
         8,
         9;
Run Code Online (Sandbox Code Playgroud)

当我重新开始时,我明白了

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个问题,并解释说我需要包括在各个领域selectgroup by.我通过列号来做到这一点.

如何调整此查询以便我不会收到00979错误?

sql oracle ora-00979

1
推荐指数
1
解决办法
131
查看次数