


Задачка по SQL
Рассчитайте конверсию по месяцам. Отобразите в итоговой таблице первый день месяца и конверсию. Отсортируйте таблицу по месяцам в порядке возрастания. Не учитывайте сотрудников парка: номера их браслетов — 145738, 145759, 145773, 145807, 145815, 145821, 145873, 145880.
Пишу такой код но ответ не принимают
SELECT date,
COUNT(DISTINCT bracelet_id)/1000::numeric AS convers
FROM pizza
WHERE bracelet_id NOT IN ('145738', '145759', '145773', '145807', '145815', '145821', '145873', '145880') AND EXTRACT(day FROM date)=1
GROUP BY date
ORDER BY EXTRACT(month FROM date)
подскажите в чем ошибка???
SELECT DATE_TRUNC('month',date),
COUNT(DISTINCT bracelet_id)/1000.00 AS conv
FROM pizza
WHERE NOT bracelet_id IN (145738,145759,145773,145807,145815,145821,145873,145880)
GROUP BY DATE_TRUNC('month',date)
ORDER BY DATE_TRUNC('month',date) ASC, conv DESC
Правильный код
SELECT DATE_TRUNC('month',date),
COUNT(DISTINCT bracelet_id)/1000.00 AS conv
FROM pizza
WHERE NOT bracelet_id IN (145738,145759,145773,145807,145815,145821,145873,145880)
GROUP BY DATE_TRUNC('month',date)
ORDER BY DATE_TRUNC('month',date) ASC;
в Select нужно поле "первый день месяца", а не date!
для этого используем функцию date_trunc с отрезком времени month.
функция extract - в этой задаче не требуется.
Группировка и Сортировка делается по "первому дню месяца" или по псевдониму!
SELECT DATE_TRUNC('month',date) as dat, count(DISTINCT bracelet_id)/1000
::numeric
from pizza
where bracelet_id NOT IN (145738, 145759, 145773, 145807, 145815, 145821, 145873, 145880)
group by dat
order by dat
Это курс от Яндекса?Сможешь поделиться?