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