0

SQL 中有没有办法首先从表中选择记录并聚合它,然后将其插入到另一个表中?例如,这是给定的表。

[帐户 ID ] | [ job_role_id ] | [薪水]
          1 1 10,000

          1 2 10,000

          1 3 10,000

          1 1 20,000

          1 2 10,000

          2 3 10,000

          2 1 20,000

          2 2 20,000

          2 3 10,000

我需要以这样一种方式聚合记录,即 account_id 给出的相同 job_role_id 的所有薪水都按以下方式添加:

[帐户 ID ] | [ job_role_id ] | [薪水]
          1 1 30,000

          1 2 20,000

          1 3 20,000

          2 1 20,000

          2 2 20,000

          2 3 20,000

请原谅我的英语不好,因为我现在睡眠不足,英语是我的第二语言。

4

2 回答 2

0

是的,您可以首先通过提出您的选择语句来做到这一点,您希望salary基于account_idand聚合job_role_code。您可以使用以下方法执行此操作:

SELECT account_id, job_role_id, Sum(salary) as salary
FROM job_table
GROUP BY account_id, job_role_id;

下一步是您要将其插入到其他表中以永久保存此数据。我们可以像这样修改选择:

INSERT INTO job_salary_aggregate_table (account_id, job_role_id, salary)
SELECT account_id, job_role_id, Sum(salary) as salary
FROM job_table
GROUP BY account_id, job_role_id;

这只会有效运行一次。如果您需要再次运行它,则需要job_salary_aggregate_table在尝试SELECT INTO...再次执行之前截断数据。

根据要求,额外计数:

INSERT INTO job_salary_aggregate_table (account_id, job_role_id, salary, num_agged)
SELECT account_id, job_role_id, Sum(salary) as salary, Count(1) as num_agged
FROM job_table
GROUP BY account_id, job_role_id;
于 2016-01-25T18:27:18.977 回答
0

你会想在GROUP BY这里使用 a 。

SELECT account_id, job_role_id, SUM(salary)
FROM jobs
GROUP BY account_id, job_role_id;
于 2016-01-25T18:28:00.230 回答