我有一张表,我希望在一个查询中包含两个查询的统一视图。以下是表格:
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?
答案 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;