Может быть лучше разделить условия ON и WHERE, даже если результат одинаков для INNER JOIN.Делает понятнее, что связывает две таблицы.
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 (самостоятельное соединение), где COMMUNICATIONS_ID равен cal1
- Суммируйте некоторый столбец из cal2
Если фильтр на COMMS_TYPE_ID=4
приводит к нескольким cal1.COMMUNICATIONS_ID
с, то вы захотите GROUP BY
COMMUNICATIONS_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