Мне удалось найти очень ручную работу, но я уверен, что есть гораздо более простой метод, чем я надеюсь достичь. По сути, я пытаюсь выяснить, сколько существует погашений для клиентов, которые достигли «баллов» (продажи против их множителя) и достигли порога (2000) как одно число
Пример таблицы:
ID SALES Multiplier
10R46 1140.0 Two
10R46 1123.5 Two
100R91 1115.3 One
10R91 2.0 One
10M95 800.0 One
10M95 600.0 Two
10M95 33.0 Zero
Текущий код, который я использую:
SELECT ID,
SUM(CASE WHEN Multiplier = 'Two' THEN (trunc(sales * 2))
WHEN Multiplier = 'One' THEN (trunc(sales * 1))
ELSE 0 END) as points
FROM transactions
GROUP BY ID
HAVING SUM(CASE WHEN Multiplier = 'Two' THEN (trunc(sales * 2))
WHEN Multiplier = 'One' THEN (trunc(sales * 1))
ELSE 0 END) > 2000
Из которого я помещаю результат во временную таблицу и запускаю сумму усечения сверху
SELECT SUM(trunc(points/2000))
FROM temp_table
Что дает идеальный результат (в данном случае 3), сколько существует погашений.
Итак, мой вопрос для великих умов, как мне упростить это и получить один запрос без временной таблицы?