下面是表格,我需要输出,它为我提供了按日期分组的所有列,其中包含特定日期的工资总额(> 6000)。
source table ( INput table ) :
id name date1 salary
1 JOHNSON 1990-12-17 1800
2 HARDING 1990-12-17 5200
3 TAFT 1990-12-17 2500
4 HOOVER 1990-04-02 2700
5 LINCOLN 1990-04-02 2250
6 GARFIELD 1990-04-02 5400
7 POLK 1997-09-22 2500
8 GRANT 1997-09-22 320
所需的输出表(下方):(最后2条7,8不存在)
id name date1 salary sum(salary)
1 JOHNSON 1990-12-17 1800 9500
2 HARDING 1990-12-17 5200 9500
3 TAFT 1990-12-17 2500 9500
----------
4 HOOVER 1990-04-02 2700 10350
5 LINCOLN 1990-04-02 2250 10350
6 GARFIELD 1990-04-02 5400 10350
-----------
(最后两个值不应该来,因为那个日期的薪水总和<6000)
答案 0 :(得分:1)
Oracle安装程序:
CREATE TABLE table_name (id, name, date1, salary ) AS
SELECT 1, 'JOHNSON', DATE '1990-12-17', 1800 FROM DUAL UNION ALL
SELECT 2, 'HARDING', DATE '1990-12-17', 5200 FROM DUAL UNION ALL
SELECT 3, 'TAFT', DATE '1990-12-17', 2500 FROM DUAL UNION ALL
SELECT 4, 'HOOVER', DATE '1990-04-02', 2700 FROM DUAL UNION ALL
SELECT 5, 'LINCOLN', DATE '1990-04-02', 2250 FROM DUAL UNION ALL
SELECT 6, 'GARFIELD', DATE '1990-04-02', 5400 FROM DUAL UNION ALL
SELECT 7, 'POLK', DATE '1997-09-22', 2500 FROM DUAL UNION ALL
SELECT 8, 'GRANT', DATE '1997-09-22', 320 FROM DUAL;
<强>查询强>:
SELECT *
FROM (
SELECT t.*,
SUM( salary ) OVER ( PARTITION BY date1 ) AS sum_salary
FROM table_name t
)
WHERE sum_salary >= 6000;
<强>输出强>:
ID NAME DATE1 SALARY SUM_SALARY
---------- -------- ------------------- ---------- ----------
4 HOOVER 1990-04-02 00:00:00 2700 10350
6 GARFIELD 1990-04-02 00:00:00 5400 10350
5 LINCOLN 1990-04-02 00:00:00 2250 10350
3 TAFT 1990-12-17 00:00:00 2500 9500
2 HARDING 1990-12-17 00:00:00 5200 9500
1 JOHNSON 1990-12-17 00:00:00 1800 9500
答案 1 :(得分:0)
select * from
(
select id, name,
sum(salary) over (partition by date1) sum_sal
from table_name
) where sum_sal >= 6000;
答案 2 :(得分:0)
以下查询将适用于sql server 2008和Mysql: -
select * from (
select a.id,a.name,a.date1,a.salary,
(select sum(salary) from table_name b where b.date1=a.date1) Sum_Salary
from
table_name a
) c
where Sum_Salary >=6000
order by id
输出: -
id name date1 salary Sum_Salary
1 JOHNSON 1990-12-17 1800.00 9500.00
2 HARDING 1990-12-17 5200.00 9500.00
3 TAFT 1990-12-17 2500.00 9500.00
4 HOOVER 1990-04-02 2700.00 10350.00
5 LINCOLN 1990-04-02 2250.00 10350.00
6 GARFIELD 1990-04-02 5400.00 10350.00