代码之家  ›  专栏  ›  技术社区  ›  23k

查询数据大于两列之和的行

  •  1
  • 23k  · 技术社区  · 6 年前

    我对SQL/PLSQL非常陌生,在思考如何执行这个特定查询时遇到了很多困难。

    我想从表中选择总工资(工资和佣金之和)大于2900的员工人数。

    我知道不能将聚合函数直接放在WHERE子句中。我在下面尝试了这个,虽然它不会抛出错误,但也不会给出正确的结果。

    在SQL中,如何选择sum(x+y)>Z

    DECLARE
        employee_total_pay_greater          NUMBER;
    BEGIN
    
        SELECT COUNT(*)
        INTO employee_total_pay_greater
        FROM EMPLOYEE
        WHERE (SELECT SUM(SALARY + NVL(COMMISSION, 0))
                FROM EMPLOYEE) > 2900;
    
        DBMS_OUTPUT.PUT_LINE(employee_total_pay_greater);
    
    END;
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    如果值都在一行中,则不需要聚合函数:

    SELECT COUNT(*)
    INTO employee_total_pay_greater
    FROM EMPLOYEE
    WHERE (SALARY + COALESCE(COMMISSION, 0))) > 2900;