MYSQL Запрос на сумму

0

Я пишу инструмент PHP, из моего запроса я получаю вывод ниже

| dst        | count(*) |
| 0280302002 |       31 |
| 0280304115 |       83 |
| 0280304121 |       80 |
| 0280304124 |       10 |
| 0280304136 |        1 |
| 2002       |        3 |
| 4115       |       12 |
| 4121       |       10 |
| 4124       |        2 |

Что мне нужно, это только 10 цифр вывода.

Пример: - 31 (значение 0280302002 + 3 (значение 2002) = выход должен быть 0280302002 = 34

Есть ли способ получить это значение?

мой запрос

select dst,count(*) from cdr where calldate between '2019-01-01 00:00:00' and '2019-01-31 23:59:59' and dst in ('4121', '2006','2011''4124','0280304121', '0280302006','0280302011','0280304124') and length(src)>4 group by dst order by dst;
Теги:

2 ответа

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

Вы можете попробовать использовать case when expression и concat()

select case when length(dst)=4 then concat('028030',dst) else dst end as dst,count(*) 
from cdr 
where calldate between '2019-01-01 00:00:00' and '2019-01-31 23:59:59' and 
dst in ('4121', '2006','2011''4124','0280304121', '0280302006','0280302011','0280304124') and length(src)>4 
group by case when length(dst)=4 then concat('028030',dst) else dst end
order by dst
  • 0
    Из этого я получаю 4-значный номер: C мне нужно получить 10-значный выход
  • 0
    @ Отладчик, я изменил ответ - вы можете проверить сейчас
Показать ещё 2 комментария
0

Вы можете рассматривать dst как строку и принимать четыре крайних справа символа:

SEECT    RIGHT(dst, 4), COUNT(*)
FROM     cdr
WHERE    calldate BETWEEN '2019-01-01 00:00:00' AND '2019-01-31 23:59:59' AND 
         dst IN ('4121', '2006','2011''4124','0280304121', '0280302006', '0280302011', '0280304124') AND
         LENGTH(src) > 4
GROUP BY RIGHT(dst,4)
ORDER BY 1;
  • 0
    спасибо, выше ответ сработал. в любом случае спасибо: D

Ещё вопросы

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