Arhn - архитектура программирования

SQL - суммировать операции в случае, когда оператор

Мне нужно агрегировать несколько сеансов по дням, странам и т. д. В таблице есть сумма транзакции для каждого сеанса (в местной валюте) и поле с exchange_rate в евро на время транзакции. Как это:

amount | currency | exchange_rate | date | country 

Я запустил sum(amount/exchange_rate), однако примерно для 0,5% строк значение exchange_rate равно 0, и поэтому он выдает ошибку, которая не может делиться на 0.

Я попытался запустить его в случае, когда:

sum(case when exchange_rate = 0 then sum(amount) else sum(amount/exchange_rate) end) as volume

Но, по-видимому, вложенные суммы не допускаются. Есть ли у кого-нибудь идеи о том, как я могу получить результат, который должен логически производиться выше, но без вложенных сумм в случае, когда оператор?

20.07.2020

  • Что вы хотите делать, когда обменный курс равен нулю? 20.07.2020
  • @ Цепеш; Я хочу заменить 0 на 1, как предложил GMB 21.07.2020

Ответы:


1

Предполагая, что обменный курс 0 указывает на то, что сумма уже указана в валюте EUR, вы можете сделать:

sum(amount / case when exchange_rate = 0 then 1 else exchange_rate end)
20.07.2020

2

Я думаю, вы хотите:

sum(case when exchange_rate = 0 then amount else amount/exchange_rate end) as volume

Или для немного меньшего набора текста:

sum(amount / coalesce(nullif(exchange_rate, 0), 1)) as volume
20.07.2020

3

По сути, вы хотите рассматривать обменный курс как 1, когда он равен нулю. Ты можешь сделать:

sum(case when exchange_rate = 0 
         then amount 
         else amount/exchange_rate 
    end
) as volume
20.07.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..