我正在尝试列出表格中每列火车的最新目的地(最近出发时间),例如:
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中执行此操作?
我通过以下查询获得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子句的任何示例.我尝试一次一个地从组中删除每个字段,但仍然得到相同的错误.
我一直在做一项涉及为医院创建数据库的任务,而且我遇到了一个非常令人沮丧的错误,无论我做了多少研究,我都无法解决这个问题.
我收到的错误是:
第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) 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行
任何人都可以复制/解释这个吗?谢谢!
我在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)
这不可能吗?
我在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) 我有一个适用于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,凯文.
我有这个域名:
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上工作了!;-)
非常感谢
我正在执行以下请求,我得到一个"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) 我有一个名为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区域,名称,但它没有给我正确的表格
我有一个类似这样的查询:
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)
我已经看到了这个问题,并解释说我需要包括在各个领域select
中group by
.我通过列号来做到这一点.
如何调整此查询以便我不会收到00979
错误?