在简单的情况下,假设我有一个如下所示的表:
mysql> describe widget;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| name | varchar(255) | YES | | NULL | |
| enabled | smallint(1) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
是否可以计算在同一查询中启用(启用= 1)的所有窗口小部件的计数与所有窗口小部件的计数?
例如,如果我总共有3个小部件并且启用了一个小部件,那么我想让我的查询结果看起来像:
mysql> SELECT ... as enabled_count, ... as total_count ...
+---------------+-------------+
| enabled_count | total_count |
+---------------+-------------+
| 1 | 3 |
+---------------+-------------+
答案 0 :(得分:12)
如果启用始终为1或0,则可以执行以下操作:
SELECT
COUNT(*) as total_count,
SUM(enabled) as enabled_count
FROM widget
如果是另一个值,可能是:
SELECT
COUNT(*) as total_count,
SUM( CASE WHEN enabled in ('enabled value 1', 'enabled value 2')
THEN 1
ELSE 0
END
) as enabled_count
FROM widget