получить количество непрочитанных сообщений - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть это требование с нашей БД, как показано ниже

Я хочу получить 3 столбца requestType, CategoryGroup и число readStatus столбец

Результат будетпокажите все requestType вместе с categoryGroup, и если readStatus равно false, то будет показано его количество, и если все readStatus истинно в том же requestType, тогда вернет 0.

также, если requestType равно NULL и пусто в том же categoryGroup (из таблицы A, subcategoryId 12 и 13 совпадают с categoryGroup в таблице B), то categoryGroup должна отображаться как BLANK и должна содержать счетчик(readStatus=0) как NULL, так и BLANK

Result count

Запрос, который я написал, возвращает только столбцы и счет в отношении readStatus=false ис указанием его общего количества.

select coalesce( m.requestType, "") as requestType,
  count(m.messageId) as count, 
  s.categoryGroup categoryGroup 
from mb_message m 
join mb_subcategory s on m.subCategoryId = s.subCategoryId 
where m.readStatus=0 
and m.storeId = ? 
and countryCode= ?
and m.modifiedDate >= ?
group by m.requestType, m.subCategoryId;

Ожидаемый результат для вышеуказанного запроса:

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2019

Я бы сделал что-то вроде:

select
  requesttype, 
  sum(cnt) as cnt,
  categorygroup
from (
  select
    case when a.requesttype is null or a.requesttype = '' 
         then 'BLANK' else a.requesttype end as requesttype,
    case when a.readstatus = 0 then 1 else 0 end as cnt,
    b.categorygroup
  from tablea a
  join tableb b on b.subcategoryid = a.subcategoryid
) x
group by requesttype, categorygroup
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...