Суммирование рассчитанного поля MySQL, где значение столбца одинаково

StackOverflow https://stackoverflow.com/questions/4810807

  •  25-10-2019
  •  | 
  •  

Вопрос

По сути, я пытаюсь подвести итог значения рассчитанного поля, когда определенное значение (в моем случае communications_id) равна. Эти оценки связаны с одной и той же связи, и я хочу подвести итог этих значений.

Я новичок в SQL, и это моя ошибочная первая попытка:

SELECT *
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
    AND cal1.COMM_TYPE_ID=4
Это было полезно?

Решение

SELECT COMMUNICATIONS_ID, SUM(fieldName) 
FROM consumer_action_log
WHERE COMM_TYPE_ID = 4
GROUP BY COMMUNICATIONS_ID

Я не вижу необходимости присоединиться к столу к себе здесь.

Другие советы

Может быть лучше разделить включение и, где условия, даже если результат одинаков для внутренних соединений. Проясняет, что связывает две таблицы.

SELECT sum(cal2.somecolumn)
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
WHERE cal1.COMM_TYPE_ID=4
  • Найдите записи Cal1, где COMM_TYPE_ID=4
  • Присоединяйтесь к Cal2 (Self Join), где Communication_ID равен CAL1
  • Подвести итог столбца от Cal2

Если фильтр на COMMS_TYPE_ID=4 приводит к нескольким cal1.COMMUNICATIONS_IDS, тогда вы захотите GROUP BY Communication_id (не имеет значения от Cal1 или Cal2 - они одинаковы)

SELECT cal2.COMMUNICATIONS_ID, sum(cal2.somecolumn)
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
WHERE cal1.COMM_TYPE_ID=4
GROUP BY cal2.COMMUNICATIONS_ID
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top