SHOW:
|
|
- or go back to the newest paste.
1 | - | /*Составьте сводную таблицу. Посчитайте заказы, оформленные за каждый месяц в течение нескольких лет: с 2011 по 2013 год. Итоговая таблица должна включать четыре поля: invoice_month, year_2011, year_2012, year_2013. Поле invoice_month должно хранить месяц в виде числа от 1 до 12. |
1 | + | /*Отберите фамилии пользователей, которые: |
2 | - | Если в какой-либо месяц заказы не оформляли, номер такого месяца всё равно должен попасть в таблицу. |
2 | + | оформили хотя бы один заказ в январе 2013 года, |
3 | - | В этом задании не будет подсказок. Используйте любые методы, которые посчитаете нужными. |
3 | + | а также сделали хотя бы один заказ в остальные месяцы того же года. |
4 | Пользователей, которые оформили заказы только в январе, а в остальное время ничего не заказывали, в таблицу включать не нужно. | |
5 | */ | |
6 | - | SELECT i_month.invoice_month, |
6 | + | |
7 | - | inv_2011.year_2011, |
7 | + | SELECT last_name |
8 | - | inv_2012.year_2012, |
8 | + | FROM client |
9 | - | inv_2013.year_2013 |
9 | + | WHERE customer_id IN |
10 | - | FROM |
10 | + | (SELECT not_january.customer_id |
11 | - | (SELECT EXTRACT(MONTH FROM CAST(invoice_date AS date)) AS invoice_month |
11 | + | FROM |
12 | - | FROM invoice |
12 | + | (SELECT DISTINCT(customer_id) |
13 | - | GROUP BY invoice_month |
13 | + | FROM invoice |
14 | - | ORDER BY invoice_month) AS i_month |
14 | + | WHERE (CAST(invoice_date AS date) BETWEEN '2013-01-01' AND '2013-01-31')) AS january |
15 | - | |
15 | + | INNER JOIN |
16 | - | |
16 | + | (SELECT DISTINCT(customer_id) |
17 | - | LEFT JOIN |
17 | + | FROM invoice |
18 | - | (SELECT EXTRACT(MONTH FROM CAST(invoice_date AS date)) AS invoice_month, |
18 | + | WHERE (CAST(invoice_date AS date) BETWEEN '2013-02-01' AND '2013-12-31')) AS not_january ON january.customer_id = not_january.customer_id); |