#sql #group-by #amazon-redshift
#sql #группировать по #amazon-redshift
Вопрос:
Я хочу суммировать количество раз, когда были достигнуты пороговые значения в соответствии с 2 разными значениями: датой и элементом.
Redshift выдает мне сообщение об ошибке с запросом дополнительных столбцов в group by (которые я не хочу в group by: «столбец должен отображаться в предложении group by или использоваться в агрегатной функции»).
Другая проблема, которая может возникнуть, заключается в том, что код будет агрегировать мои столбцы, и я хочу дублировать итоговое число.
Что у меня есть
|------------|--------|------------|
| item_type | date |thresh_rchd |
|------------|--------|------------|
| baby |monday | 2 |
|------------|--------|------------|
| tom |monday | 6 |
|------------|--------|------------|
| baby |monday | 8 |
|------------|--------|------------|
| baby |tuesday | 4 |
|------------|--------|------------|
Чего я хочу:
|------------|--------|------------|-------------|
| item_type | date |thresh_rchd |total thresh |
|------------|--------|------------|-------------|
| baby |monday | 2 | 10 |
|------------|--------|------------|-------------|
| tom |monday | 6 | 6 |
|------------|--------|------------|-------------|
| baby |monday | 8 | 10 |
|------------|--------|------------|-------------|
| baby |tuesday | 4 | 4 |
|------------|--------|------------|-------------|
Ответ №1:
вы можете попробовать, как показано ниже, используя функцию window
select item_type, date, thresh_rchd,
sum(thresh_rchd) over(partition by item_type, date) as total_thresh
from tablename
Комментарии:
1. кажется, работает отлично! будет продолжать использовать over и partition by, когда group by не сокращает его! Спасибо
Ответ №2:
select t1.item_type,t1.date,t1.thresh_rchd,t2.total
from <table> t1
inner join
(
select item_type,date,sum(thresh_rchd) total from <table>
group by item_type,date) t2
on t1.item_type=t2.item_type
and t1.date=t2.date