合并两个查询的结果

时间:2016-02-23 08:06:57

标签: mysql sql

我有一张表,我希望在一个查询中包含两个查询的统一视图。以下是表格:

id   message   wordCount    brand
-----------------------------------
1   xx xx xx     3          Brand1
2   x xx xx x    4          Brand1
3   x x xxxx     3          Brand2
4   x x xx                  Brand2
4   x x          NuLL       Brand1

and so on..

我想编写一个显示非空值计数的查询,即

select brand, count(wordCount) wrdCnt
from my_table
where (wordCount is not null and wordCount!='')
group by brand;

但是,我想要显示第三列,只显示no。那些品牌的行。这将让我知道有多少行我们没有得到字数

select brand, count(*) TotalCnt
from my_table
group by brand;

如何在单一视图中获取品牌,wrdCnt和TotalCnt?

2 个答案:

答案 0 :(得分:1)

使用case表达式进行条件wrdCnt计数:

select brand,
       count(*) TotalCnt,
       count(case when wordCount is not null and wordCount!='' then 1 end) as wrdCnt
from my_table
group by brand;

答案 1 :(得分:-1)

要获取品牌的wrdCnt,您需要使用SUM(),而不是COUNT()。

此外,你没有为此做任何过滤器,聚合函数只接受非NULL行,0对SUM()没有影响。

以下是查询:

SELECT
    brand,
    SUM(wordCount) wrdCnt,
    COUNT(*) rowCnt
FROM 
    my_table
GROUP BY
    brand;