Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Возможно ли в одной выборке вывести несколько COUNT`ов с условием?

Дмитрий Митяев Ученик (1), закрыт 4 года назад
Дополнен 4 года назад
Можно ли в PL SQL сделать что-то типа этого:

Select

a,
b,
c,
COUNT (D ****** WHERE D = 'tino'),
COUNT (D ****** WHERE D = 'tipo'),
COUNT (D ****** WHERE D = 'tiko')

FROM
TABLE A
JOIN TABLE B ON a.id = b.id

GROUP BY ******
Дополнен 4 года назад
Вообще, может ли COUNT как-то с условием работать?
Или какие есть альтернативные способы?
Дополнен 4 года назад
Мне нужно в одном отчете вывести несколько количеств, суммированных по условиям (суммировать только с кодами 'tino', 'tipo' и 'tiko')
Лучший ответ
Дед Мазай Гений (58109) 4 года назад
count(case when условие then 1 end) имя-столбца-результата
Остальные ответы
Андрей Высший разум (425166) 4 года назад
Ну так замени count на sum. И поставь внутрь sum выражение, которое имеет значение 1 при D = 'tipo' и 0 при D <> 'tipo'. В MySQL это просто SUM(D = 'tipo'), а с PL/SQL не сталкивался.
Дмитрий Дидух Профи (567) 4 года назад
Select

ce.WTL_REASON AS филиал,
u.OPID логин_владельца,
g.NAME AS группа_оператора,
COUNT (case when ct.CODE = 'ТИННО' then 1 end) ТИННО,
COUNT (case when ct.CODE = 'ТИКО' then 1 end) ТИКО,
COUNT (case when ct.CODE = 'ТИРО' then 1 end) ТИРО,
SUM (p.AMOUNT) сумма_платежей

FROM
KOLLECTO.ACCOUNTS ac
LEFT JOIN TVER.ACTIVITYCC_REP ar ON ac.CEID = ar.CEID
LEFT JOIN KOLLECTO.COLLECTION_ENTITIES ce ON ac.CEID = ce.CEID
LEFT JOIN KOLLECTO.PAYMENTS p ON ac.ACCOUNT_ID = p.ACCOUNT_ID
JOIN KOLLECTO.GROUP_USER_INT gui ON ce.OWNER = gui.IDUSR
JOIN KOLLECTO.GROUPS g ON g.IDGRP = gui.IDGRP
JOIN users u ON u.IDUSR = gui.IDUSR
JOIN KOLLECTO.COLLENT_COMMENTS cc ON ce.CEID = cc.CEID
JOIN KOLLECTO.COMMENT_TYPES ct ON cc.COMMENT_ID = ct.COMMENT_ID

WHERE ct.CODE IN ('ТИРО', 'ТИННО','ТИКО')
AND g.NAME like 'Collectors%'
AND ac.TAKE_OVER_DATE BETWEEN '01.01.19' AND '31.12.19'

GROUP BY ce.WTL_REASON, u.OPID, g.NAME

Order by ce.WTL_REASON, u.OPID, g.NAME
Похожие вопросы