【发布时间】:2017-09-09 23:05:35
【问题描述】:
请帮我建立一个查询。
需要得到 MAX(LVALUE) & SUM(BVALUE)。 这是一个非常简单的要求,但我应该考虑以下三个条件。
一个。如果 BVALUE 为零,则该行不应参与构建 MAX(LVALUE)。
b.每个 NAME 至少应打印一行。
c。如果所有 BVALUE 都为零,则 MAX(LVALUE) 应该为零。
CREATE TABLE P_TEST
(
NAME VARCHAR2(10),
LVALUE NUMBER,
BVALUE NUMBER
)
/
INSERT INTO P_TEST VALUES('FIRST',929292,0);
INSERT INTO P_TEST VALUES('FIRST',12,32);
INSERT INTO P_TEST VALUES('FIRST',-34,0);
INSERT INTO P_TEST VALUES('FIRST',21,0);
INSERT INTO P_TEST VALUES('SECOND',79292,0);
COMMIT;
下面的查询可以正常工作,但 MAX(LVALUE) 929292 是从 BVALUE 的零值驱动的,因此它不符合规则。
SELECT NAME,MAX(LVALUE),SUM(BVALUE)
FROM P_TEST
GROUP BY NAME
/
@错误的结果
NAME MAX(LVALUE) SUM(BVALUE)
---------- ----------- -----------
SECOND 79292 0
FIRST 929292 32
@想要的结果
NAME MAX(LVALUE) SUM(BVALUE)
---------- ----------- -----------
SECOND 0 0
FIRST 12 32
【问题讨论】:
标签: oracle postgresql