开发者

MySQL: Count rows by field

开发者 https://www.devze.com 2022-12-23 21:46 出处:网络
All rows in a table have a type field which is either 0 or 1. I need to count rows w开发者_如何学Cith 0 and with 1 in one query. So that result should look something like:

All rows in a table have a type field which is either 0 or 1.

I need to count rows w开发者_如何学Cith 0 and with 1 in one query. So that result should look something like:

type0 | type1
------+------
1234  | 4211

How can this be implemented?


select type, count(type) from tbl_table group by type;


Lessee...

SELECT
    SUM(CASE type WHEN 0 THEN 1 ELSE 0 END) AS type0,
    SUM(CASE type WHEN 1 THEN 1 ELSE 0 END) AS type1
FROM
   tableX;

This has not been tested.


You may want to use subqueries as scalar operands:

SELECT (SELECT COUNT(*) FROM table WHERE type = 0) AS type0,
       (SELECT COUNT(*) FROM table WHERE type = 1) AS type1;

Tested in MySQL as follows:

CREATE TABLE t (id INT NOT NULL AUTO_INCREMENT, type INT);

INSERT INTO t VALUES (NULL, 0);
INSERT INTO t VALUES (NULL, 0);
INSERT INTO t VALUES (NULL, 1);
INSERT INTO t VALUES (NULL, 1);
INSERT INTO t VALUES (NULL, 1);

SELECT (SELECT COUNT(*) FROM t WHERE type = 0) AS type0,
       (SELECT COUNT(*) FROM t WHERE type = 1) AS type1;

+-------+-------+
| type0 | type1 |
+-------+-------+
|     2 |     3 | 
+-------+-------+
1 row in set (0.00 sec)


A result like this can easily be achieved:

Type  Count
-----------
type0 1234
type1 4221

You can use something like:

SELECT CONCAT('type', [type]) as Type, COUNT(*) as Count
FROM MyTable
GROUP BY Type
0

精彩评论

暂无评论...
验证码 换一张
取 消