Mic*_*mon 10 postgresql postgresql-9.3
我正在尝试使用运行查询,MAX()但我的问题是,如果该字段包含一个NULL值,则数据不返回任何内容。更新表不是一个选项,那么这个查询应该如何重写以返回 0 时NULL?
下面的示例 DDL - 我硬编码了一个WHERE不返回任何内容的子句,仅用于说明目的,理想情况下我想为用户返回所有usernames和最高logincount的
CREATE TABLE Test
(
username varchar(50) not null,
logincount int,
logindate Date
);
Insert Into Test (username, logincount, logindate)
VALUES
('er11', 1, '2017-01-01'), ('er11', 2, '2017-01-02'), ('ff12', NULL, NULL)
,('jb88', 1, '2017-01-09');
With maxlogincount As
(
select max(logincount) As "MaxLoginCount"
,username
FROM Test
GROUP BY username
)
Select
username
,logincount
,logindate
FROM Test t
inner join maxlogincount mlc
ON t.username = mlc.username
And mlc."MaxLoginCount" = t.logincount
WHERE t.username = 'ff12'
Order by t.username asc
Run Code Online (Sandbox Code Playgroud)
McN*_*ets 15
使用max(coalesce(logincount, 0))以避免空值
COALESCE 函数返回它的第一个不为空的参数。仅当所有参数都为 null 时才返回 Null。当检索数据进行显示时,它通常用于替换空值的默认值,例如: