Общая скидка за месяц, год и валюту без учета данных за 2017 год

Мне нужно узнать общую скидку за месяц, год и валюту, без учета данных за 2017 год по этой базе:

Sales table:
PK sale_id : text
FK1 client_id : text
tax_code : text
currency : text
amount : integer
notes : text
created_at : timestamp

Sales_entries table:
PK sale_entry_id : text
FK1 sale_id : text
price : integer
discount : integer
FK2 journey_id : text

Я создал этот запрос, но я не знаю, правильно ли он:

Select
Datetrunc(‘month’, a.created_at) as month,
Datetrunc(‘year’, a.created_at) as year,
a.Currency as currency,
Sum(b.discount) as discount
From sales as a
Left join sales_entries as b 
On a.sales_id = b.sale_id
Where year <> 2017
Group by
Month,
Year,
currency

Введите пример данных и желаемый результат.

Robert Kock 27.05.2019 12:24

Какие СУБД вы используете? (Там используются некоторые специфические функции продукта.)

jarlh 27.05.2019 12:24
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша арифметика дат немного неверна. Я думаю, это то, что вы хотите:

select year(s.created_at) as yyyy,
       month(s.created_at) as mm,
       s.Currency as currency,
       sum(se.discount) as discount
from sales s left join
     sales_entries se
     on s.sales_id = se.sale_id
where s.created_at < '2017-01-01' or
      s.created_at >= '2018-01-01'
group by year(s.created_at), month(s.created_at),
         s.currency
order by year(s.created_at), month(s.created_at), s.currency;

Обратите внимание, что я также заменил псевдонимы таблиц осмысленными аббревиатурами, а не произвольными буквами.

плюс один для измененного предложения where, поэтому можно использовать индекс для created_at (если он определен, конечно).

Conffusion 27.05.2019 12:56

Другие вопросы по теме