如何在一个查询中获取子集的计数以及总计数?

Ian*_*ell 3 mysql sql

在简单的情况下,假设我有一个如下所示的表:

mysql> describe widget; 
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| name    | varchar(255) | YES  |     | NULL    |       | 
| enabled | smallint(1)  | YES  |     | NULL    |       | 
+---------+--------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

是否可以计算在同一查询中启用(启用= 1)的所有窗口小部件的计数与所有窗口小部件的计数?

例如,如果我总共有3个小部件并且启用了一个小部件,我希望得到我的查询结果,如下所示:

mysql> SELECT ... as enabled_count, ... as total_count ...
+---------------+-------------+
| enabled_count | total_count |
+---------------+-------------+
|             1 |           3 |
+---------------+-------------+
Run Code Online (Sandbox Code Playgroud)

Joe*_*erg 12

如果启用始终为1或0,则可以执行以下操作:

SELECT 
   COUNT(*) as total_count,
   SUM(enabled) as enabled_count
 FROM widget
Run Code Online (Sandbox Code Playgroud)

如果它是另一个值,也许:

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
Run Code Online (Sandbox Code Playgroud)