SQL select计数1值

时间:2015-08-06 06:52:05

标签: sql

我有一张这样的表:

then()

我想计算每种类型中有多少有“错误”的错误。作为状态,因此在结果中它将是+---------+------------+--------+--------------+ | Id | Name | Status | Content_type | +---------+------------+--------+--------------+ | 2960671 | PostJob | Error | general_url | | 2960670 | auto_index | Done | general_url | | 2960669 | auto_index | Done | document | | 2960668 | auto_index | Error | document | | 2960667 | auto_index | Error | document | +---------+------------+--------+--------------+ 1x general_url

我试过这样的事情:

2x document

但我无法弄清楚如何从中获取content_type

4 个答案:

答案 0 :(得分:4)

你想要这个

select Content_type, 
       count(Status) 
from Indexing 
where Status='Error' 
group by Content_type;

答案 1 :(得分:1)

GROUP BY应该完成这项工作:

SELECT Content_type, COUNT(Id) from Indexing where Status = 'Error' GROUP BY Content_type;

<强>解释

COUNT (x)计算中的行数,COUNT (*)也会这样做。

COUNT (DISTINCT x)计算中不同值的数量。

如果没有GROUP BY子句,就是整个记录集,因此在您的示例中,您会看到一个值(2)作为结果;即集合中有2个不同的Content_types。

答案 2 :(得分:0)

SQL Fiddle Oracle

<强>模式

create table test
(id varchar2(10),
name varchar2(30),
status varchar2(20),
content_type varchar2(30)
);

 insert into test values('2960671','PostJob','Error','general_url');
 insert into test values('2960670','auto_index','Done','general_url');
 insert into test values('2960669','auto_index','Done','document');
 insert into test values('2960668','auto_index','Error','document');
 insert into test values('2960667','auto_index','Error','document');

选择查询

SELECT  LISTAGG(content_type, ',') WITHIN GROUP (ORDER BY rownum) AS content_type,
count(content_type) as content_type_count
from
(
select distinct(content_type) content_type
FROM   test
where status='Error'
);

<强>输出

|         CONTENT_TYPE | CONTENT_TYPE_COUNT |
|----------------------|--------------------|
| document,general_url |                  2 |

这里的想法是打印逗号分隔的content_type值,以便您可以知道content_type的计数以及实际值

答案 3 :(得分:0)

试试这个

SELECT count(`content_type`) as 'count', content_type as 'x content type' FROM `tablename` where status= 'Error' group by(`content_type`)