如何使用 `group by` 将 select `insert into` 并在 Oracle 中具有唯一的约束键?

How to `insert into` with select using `group by` and having a unique constraint key in Oracle?

我正在尝试 insert into 一个 table,来自其他 2 table 的 5 个值,但是当我 尝试插入它们,Oracle 向我发送一条消息,说我违反了唯一键限制,我不明白如果我在 select.[= 中使用 distinct 子句,为什么会出现这个问题16=]

谢谢

我的查询:

  insert into grados_salariales (Department_id,
  Department_name,Sumatoria,Sal_minimo,Sal_maximo)
  Select distinct departments.department_id,
  departments.department_name,
  sum(employees.salary),min(employees.salary),
  max(employees.salary)
  from employees,departments
  group by salary,department_name,
  departments.department_id;

这是已经存在的table唯一键语句

create table
grados_salariales(
  Department_id number,
  Department_name varchar(50),
  Sumatoria number,
  Sal_minimo number,
  Sal_maximo number);




  Alter table grados_salariales
  add constraint  Department_id_pk
  primary key ( Department_id);

我希望插入 department_id 没有问题。

这是您的查询:

select distinct d.department_id, d.department_name,
       sum(e.salary), min(e.salary),
       max(e.salary)
from employees e join
     departments d
     on e.department_id = d.department_id
group by e.salary, d.epartment_name, d.department_id;

问题是 group by 中的 salary。如果你想每个部门一行,那么你可以这样做:

select d.department_id, d.department_name,
       sum(e.salary), min(e.salary),
       max(e.salary)
from employees e join
     departments d
     on e.department_id = d.department_id
group by d.department_name, d.department_id;

备注:

  • 从不FROM 子句中使用逗号。
  • 始终使用正确、明确的标准JOIN语法。
  • 使用 table 别名使您的查询更易于编写和阅读。
  • SELECT DISTINCT 几乎不适合 GROUP BY.