【问题标题】:Querying rows that have data greater than the sum of two columns查询数据大于两列总和的行
【发布时间】:2018-04-19 09:12:34
【问题描述】:

我对 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;

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

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

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

    【讨论】:

    • 嗯。有趣的。有时像这样学习新东西会让你想太多。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2019-10-18
    • 2019-12-10
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多