SQL-запрос для подсчета уникальных значений и возврата одной строки

0

вот структура моей таблицы с данными

empId, acitve

1,1

2,0

3,1

45,0

52,1

11,1
  1. Я хочу, чтобы все члены подсчитывали [результат 6]
  2. Я хочу узнать количество активных членов (active = 1) [result is 4]
  3. Я хочу знать неактивное количество членов (active = 0) [result is 2]

Но все данные должны быть возвращены в одной строке с соответствующим именем столбца.

Я пробовал это, но его результат не соответствует ожиданиям:

SELECT Count(*) total, active as total
FROM it_staff_status
GROUP by active
Теги:

3 ответа

2
Лучший ответ

Что-то вроде этого

select Count(*) total,
       sum(active=1) as activemem,
       sum(active=0) as inactivemem
from yourtable 
2

ПОПРОБУЙТЕ ЭТО: CASE пользователя, чтобы считать active и inactive и вам не нужна group by здесь, потому что все столбцы агрегируются с помощью функции aggregate:

SELECT Count(*) total, 
    SUM(CASE WHEN ACTIVE = 1 THEN 1 ELSE 0 END) as Active,
    SUM(CASE WHEN ACTIVE = 0 THEN 1 ELSE 0 END) as InActive
FROM it_staff_status
0

Попробуй это:

SELECT COUNT(*) as total, 
SUM(CASE WHEN active = 1 THEN 1 END) as active_emp,
SUM(CASE WHEN active = 0 THEN 1 END) as inactive_emp
FROM it_staff_status

Ещё вопросы

Сообщество Overcoder
Наверх
Меню