【问题标题】:How can I get both the count of a subset as well as the count of the total set in one query?如何在一个查询中同时获得子集的计数和总集的计数?
【发布时间】:2010-10-12 18:12:51
【问题描述】:

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

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 |
+---------------+-------------+

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    如果 enabled 始终为 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
    

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 2021-07-17
      相关资源
      最近更新 更多