View difference between Paste ID: 7Pf3f4GJ and CPBWPsbY
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);