Я пытаюсь получить имена всех клиентов, у которых есть более 3 проектов, и количество их проектов, но я получаю следующую ошибку:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 1 Column: 32
Любая идея, как я могу исправить это? Я понимаю, что должен включить все в GROUP BY, но я вроде как сделал.
customer_t и staff_t наследуются от user_t.
SELECT CONCAT(CONCAT(TREAT(REF(u) AS REF customer_t).name.first_name, ' '), (TREAT(REF(u) AS REF customer_t).name.last_name)) AS name, COUNT(p.projectno)
FROM "USER" u JOIN project p ON u.idno = p.customer.idno
WHERE VALUE(u) IS OF TYPE (customer_t)
GROUP BY name
HAVING COUNT(p.projectno) > 3;
CREATE TYPE name_t AS OBJECT (
first_name VARCHAR2(32),
last_name VARCHAR2(32)
);
CREATE TYPE address_t AS OBJECT (
province VARCHAR2(32),
street VARCHAR2(32),
city VARCHAR2(32),
postal_code VARCHAR2(10)
);
CREATE TYPE user_t AS OBJECT (
idno NUMBER,
email VARCHAR2(40),
password VARCHAR2(32),
name name_t,
address address_t,
phone VARCHAR2(15),
MAP MEMBER FUNCTION get_idno RETURN NUMBER
) NOT FINAL;
CREATE TYPE rank_t AS OBJECT (
rankno NUMBER,
name VARCHAR2(40),
description VARCHAR2(60)
);
CREATE TABLE "RANK" OF rank_t (
PRIMARY KEY (rankno),
UNIQUE (name)
);
CREATE TYPE customer_t UNDER user_t (
);
CREATE TYPE staff_t UNDER user_t (
salary NUMBER(7,2),
rank REF rank_t
);
CREATE TABLE "USER" OF user_t (
PRIMARY KEY (idno),
UNIQUE (email));
CREATE TYPE project_t AS OBJECT (
projectno NUMBER,
name VARCHAR2(40),
description VARCHAR2(60),
customer REF customer_t,
service REF service_t
);
CREATE TABLE project OF project_t (PRIMARY KEY (projectno));