#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;