Как я могу получить как количество подмножества, так и общее количество в одном запросе? - PullRequest
3 голосов
/ 11 марта 2009

В простом случае предположим, что у меня есть таблица, которая выглядит следующим образом:

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

Можно ли получить количество всех виджетов, которые включены (enabled = 1) в том же запросе, что и количество всех виджетов?

Например, если я насчитал 3 виджета и один из них включен, я хотел бы получить результаты моего запроса в виде:

mysql> SELECT ... as enabled_count, ... as total_count ...
+---------------+-------------+
| enabled_count | total_count |
+---------------+-------------+
|             1 |           3 |
+---------------+-------------+

1 Ответ

12 голосов
/ 11 марта 2009

Если включено всегда 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...