查询多个计数语句

Ted*_*Ted 1 mysql sql

我想结合以下两个查询,以便最终得到三列:RelativePath,field = null/empty string,value with value.我可以单独执行查询,但是我很难将它们组合起来.

SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP 
       WHERE (FIELD IS NULL) OR (FIELD = '')
       GROUP BY (RELATIVEPATH);

SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP
       WHERE (FIELD IS NOT NULL) 
       GROUP BY (RELATIVEPATH);
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 7

你需要case声明:

SELECT RELATIVEPATH, sum(case when (FIELD IS NULL) OR (FIELD = '') then 1 else 0 end),
       sum(case when field is not null then 1 else 0 end)
FROM APP 
GROUP BY (RELATIVEPATH);
Run Code Online (Sandbox Code Playgroud)

这假设的意图count(RelativePath)是计算所有行.如果您真的想要计算列的非NULL值,您可以使用:

SELECT RELATIVEPATH, count(case when (FIELD IS NULL) OR (FIELD = '') then RelativePath end),
       count(case when field is not null then RelativePath end)
FROM APP 
GROUP BY (RELATIVEPATH);
Run Code Online (Sandbox Code Playgroud)