mysql ошибка: FUNCTION asterisk.SUM не существует. (Apache суперсет) - PullRequest
1 голос
/ 03 апреля 2020

Я подключил базу данных mysql и выполнил прямой запрос sql, получил правильную таблицу, хотел ее визуализировать и нажал кнопку «Исследовать», но получил ошибку: «mysql error: FUNCTION asterisk.SUM не существует. Проверьте раздел «Разбор и разрешение имени функции» в Справочном руководстве «Пожалуйста, скажите, где я допустил ошибку, спасибо.

работает sql запрос

ошибка

Мой sql запрос:

SELECT DATE_FORMAT(start, '%Y-%m-%d') AS Date, 
       disposition AS Type, 
       DATE_FORMAT(SEC_TO_TIME(SUM(end-start)),'%H:%i:%S') AS Call_duration,
case
     when substring(dstchannel,5,4) = '1000' then 'Name1'
     when substring(dstchannel,5,4) = '2000' then 'Name2'
     when substring(dstchannel,5,4) = '3000' then 'Name3'
     when substring(dstchannel,5,4) = '4000' then 'Name4'
     when substring(dstchannel,5,3) = '100' then 'Other'
end AS Operator,
    count(*) AS Number_of_calls
    FROM cdr
    WHERE dcontext = 'call-in'
    AND disposition = 'ANSWERED'
    AND end-start > 0
    group by DATE_FORMAT(start, '%Y-%m-%d'), 4
    order by 1 desc

Мой запрос работает правильно, но когда я пытаюсь создать диаграмму, суперсет изменяет запрос, и после SUM происходит разрыв строки. Могу ли я это исправить, не меняя конфигурацию базы данных?

Суперсетовый запрос:

SELECT `Date` AS `Date`,
       `Type` AS `Type`,
       `Call_duration` AS `Call_duration`,
       `Operator` AS `Operator`,
       `Number_of_calls` AS `Number_of_calls`
FROM
  (SELECT DATE_FORMAT
     (start, '%Y-%m-%d') AS Date,
          disposition AS Type,
          DATE_FORMAT(SEC_TO_TIME(SUM
                                    (end-start)), '%H:%i:%S') AS Call_duration,
          case
              when substring(dstchannel, 5, 4) = '1000' then 'Name1'
              when substring(dstchannel, 5, 4) = '2000' then 'Name2'
              when substring(dstchannel, 5, 4) = '3000' then 'Name3'
              when substring(dstchannel, 5, 4) = '4000' then 'Name4'
              when substring(dstchannel, 5, 3) = '100' then 'Other'
          end AS
   Operator,
          count(*) AS Number_of_calls
   FROM cdr
   WHERE dcontext = 'call-in'
     AND disposition = 'ANSWERED'
     AND end-
     start > 0
   group by DATE_FORMAT
     (start, '%Y-%m-%d'),
            4
   order by 1 desc) AS expr_qry
LIMIT 1000;

1 Ответ

0 голосов
/ 03 апреля 2020

Ваш group by не соответствует столбцам select. Попробуйте:

SELECT DATE_FORMAT(start, '%Y-%m-%d') AS Date,
       disposition AS Type, 
       DATE_FORMAT(SEC_TO_TIME(SUM(end-start)), '%H:%i:%S') AS Call_duration,
       (case when substring(dstchannel,5,4) = '1000' then 'Name1'
             when substring(dstchannel,5,4) = '2000' then 'Name2'
             when substring(dstchannel,5,4) = '3000' then 'Name3'
             when substring(dstchannel,5,4) = '4000' then 'Name4'
             when substring(dstchannel,5,3) = '100' then 'Other'
        end) AS Operator,
       count(*) AS Number_of_calls
FROM cdr
WHERE dcontext = 'call-in' AND
      disposition = 'ANSWERED'
      end > start 
group by DATE_FORMAT(start, '%Y-%m-%d'), type, call_duration, operator
order by 1 desc
...