MySQL сумма двух операторов COUNT - PullRequest
2 голосов
/ 19 марта 2012

Я знаю, что это глупое решение, но, извините, я немного запутался.

У меня есть два оператора SELECT COUNT. Пример:

Заявление 1

SELECT COUNT(softwareone) AS totalcount 
FROM my_table WHERE softwareone LIKE '%typeone%'

totalcount = 3 _

Ведомость 2

SELECT COUNT(softwaretwo) AS totalcount 
FROM my_table WHERE softwaretwo LIKE '%typeone%'

totalcout = 1

Я хочу сложить обе суммы, чтобы получить totalcount = 4. Есть способ сделать это?

Примечание: тип программного обеспечения из столбцов «softwareone» и «softwaretwo» относится к одному типу (одно и то же значение).

Спасибо всем.

Ответы [ 2 ]

4 голосов
/ 19 марта 2012

Одним из способов является запись:

SELECT SUM(CASE WHEN softwareone LIKE '%typeone%'
                 AND softwaretwo LIKE '%typeone%'
                THEN 2
                ELSE 1
            END
          ) AS "totalcount"
  FROM my_table
 WHERE softwareone LIKE '%typeone%'
    OR softwaretwo LIKE '%typeone%'
;

Выражение CASE ... END будет иметь значение 2 при выполнении обоих условий (так что если softwareone и softwaretwo оба равны LIKE '%typeone%', то строка считается дважды) и 1, если только один из них.Таким образом, SUM(CASE ... END) дает общее количество строк, в которых выполняется одно условие, плюс общее количество строк, в которых выполняется другое условие.

3 голосов
/ 19 марта 2012

Вы можете использовать

Select l1.totalcount + l2.totalcount FROM 
(SELECT COUNT(softwareone) AS totalcount 
FROM my_table WHERE softwareone LIKE '%typeone%') as l1,
(SELECT COUNT(softwaretwo) AS totalcount 
FROM my_table WHERE softwaretwo LIKE '%typeone%') as l2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...