Как суммировать два столбца, которые уже созданы с использованием sum в Redshift

#sql #amazon-redshift

#sql #амазонка-красное смещение

Вопрос:

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

введите описание изображения здесь

Не получает значения, присутствующего в СТОЛБЦЕ А, в общем объеме продаж.

введите описание изображения здесь

Запрос, который я запустил, но не увенчался успехом.

 SELECT Date,
       SUM(sales a) as "total_a",
       SUM(sales b) as "total_b",
       ("total_a" "total_b") as "total_sales"
FROM data_table
GROUP BY Date;
 

Ответ №1:

Я бы предложил:

 SELECT Date,
       SUM(sales_a) as "total_a",
       SUM(sales_b) as "total_b",
       COALESCE(SUM(sales_a, 0)   COALESCE(SUM(sales_b, 0)) as "total_sales"
FROM data_table
GROUP BY Date;
 

Я знаю, что Amazon Redshift позволяет повторно использовать псевдонимы таблиц, что противоречит стандарту SQL. Однако я нахожу неудобным полагаться на эту функциональность; и это может привести к труднодоступным ошибкам, если псевдонимы ваших столбцов совпадают с существующими именами столбцов.

Ответ №2:

Вы не можете повторно использовать псевдонимы столбцов в одной и той же области, поэтому ваш запрос должен выдать ошибку. Вам нужно повторить SUM() выражения.

Затем: если возвращается одна из сумм NULL , она распространяет результаты сложения. Вы можете использовать coalesce() , чтобы избежать этого:

 SELECT Date,
       SUM(sales_a) as total_a,
       SUM(sales_b) as total_b,
       COALESCE(SUM(sales_a), 0)   COALESCE(SUM(sales_b), 0) as total_sales
FROM data_table
GROUP BY Date;