Суммирование рассчитанного поля MySQL, где значение столбца одинаково
Вопрос
По сути, я пытаюсь подвести итог значения рассчитанного поля, когда определенное значение (в моем случае 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_ID
S, тогда вы захотите 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
Не связан с StackOverflow