是否可以在没有子句的情况下进行此简单查询

时间:2018-11-09 16:40:34

标签: sql oracle

SELECT 
    pid, SUM(hourslogged) AS totalhours 
FROM
    flightskills
GROUP BY
    pid
HAVING
    SUM(hourslogged) > 1000

3 个答案:

答案 0 :(得分:2)

当您摆脱having时,我不知道您为什么专注于join子句:

select f.pid, sum (f.hourslogged) as Totalhours 
from flightskills f
group by f.pid
having sum(f.hourslogged) > 1000;

如果您真的对having感到沮丧,请使用子查询:

select f.*
from (select f.pid, sum (f.hourslogged) as Totalhours 
      from flightskills f
      group by f.pid
     ) f
where Totalhours > 1000;

答案 1 :(得分:0)

WITH f as (select pid, sum (hourslogged) as Totalhours 
from flightskills
group by pid)
SELECT p.pid, f.Totalhours
from pilots p join f on p.pid = f.pid
where f.Totalhours > 1000

答案 2 :(得分:0)

您可以使用窗口功能来做到这一点:

SELECT f.pid, f.totalhours
FROM (SELECT pid, SUM(hours) AS totalhours FROM flightskills GROUP BY pid) f
WHERE f.totalhours > 1000