Подтвердить что ты не робот

Несколько COUNT() для нескольких условий в одном запросе (MySQL)

У меня есть эти запросы:

SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW';
SELECT COUNT(*) FROM t_table WHERE color = 'BLUE';
SELECT COUNT(*) FROM t_table WHERE color = 'RED';

Есть ли способ получить эти результаты в одном запросе?

4b9b3361

Ответ 1

SELECT color, COUNT(*) FROM t_table GROUP BY color

Ответ 2

Если вы хотите, чтобы результат был в одной строке, вы можете использовать:

SELECT
    SUM(IF(color = 'YELLOW', 1, 0)) AS YELLOW,
    SUM(IF(color = 'BLUE', 1, 0)) AS BLUE,
    SUM(IF(color = 'RED', 1, 0)) AS RED
FROM t_table

Рабочий пример

Ответ 3

SELECT 'yellow' as color ,COUNT(*) FROM t_table WHERE color = 'YELLOW'
union
SELECT 'blue' , COUNT(*) FROM t_table WHERE color = 'BLUE'
union
SELECT 'red',COUNT(*) FROM t_table WHERE color = 'RED';

или

select color, count(*) from table where color in ('red', 'blue', 'yellow') group by 1

Ответ 4

Вы можете сделать это с помощью подзапроса.

SELECT(
    SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW',
    SELECT COUNT(*) FROM t_table WHERE color = 'BLUE',
    SELECT COUNT(*) FROM t_table WHERE color = 'RED'
);

Ответ 5

Это мой ответ: Este Ejemplo SQL Indica la cantidad de un Grupo y Suma los encontrado con S y N por separado. Не в сети. Пожалуйста, войдите или зарегистрируйтесь. 1 час 1 день 1 неделя 1 месяц Навсегда Войти Новости: SMF форум только что установлен! Бендито море Израиль.

SELECT sm_med_t_servicios.id as identidad, count(sm_adm_t_admision.id) as cantidad , 
SUM(IF(sm_adm_t_admision.atendido = 'S', 1, 0)) AS atendidos,
SUM(IF(sm_adm_t_admision.atendido = 'N', 1, 0)) AS por_ver

FROM sm_med_t_servicios 
LEFT JOIN sm_adm_t_admision ON sm_med_t_servicios.id = sm_adm_t_admision.sm_med_t_servicios_id
WHERE sm_med_t_servicios.m_empresas_id = '2'
GROUP BY sm_med_t_servicios.id

Надеюсь, это поможет вам.

Ответ 6

Я думаю, что это также может работать для вас

select count(*) as anc,(select count(*) from Patient where sex='F')as 
        patientF,(select count(*) from Patient where sex='M') as patientM from anc

Вы также можете выбрать и подсчитать связанные таблицы

select count(*) as anc,(select count(*) from Patient where 
    Patient.Id=anc.PatientId)as patientF,(select count(*) from Patient where
    sex='M') as patientM from anc

Ответ 7

Мой запрос работает, но только из моего интереса, есть ли более короткий и/или лучший способ?

SELECT
COUNT(kiosk_db.dm_hotline.eid) AS gesamt, 
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE YEAR(datum) = YEAR(NOW())) AS 'aktuelles_jahr',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE YEAR(datum) = YEAR(NOW()) - 1) AS 'letztes_jahr',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE YEAR(datum) = YEAR(NOW()) AND MONTH(datum) = MONTH(NOW())) AS 'aktueller_monat',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE YEAR(datum) = YEAR(NOW()) AND MONTH(datum) = MONTH(NOW()) - 1) AS 'letzter_monat',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE DATEDIFF(NOW(),datum) <= 14) AS '14_tage',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE DATE(datum) = DATE(NOW()) - 1) AS 'gestern',
 (SELECT COUNT(eid) FROM kiosk_db.dm_hotline WHERE DATEDIFF(NOW(),datum) <= 0) AS 'heute'
FROM kiosk_db.dm_hotline