Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подвис с запросом SQL

Dorator Ученик (217), на голосовании 11 месяцев назад
Задача: Давайте рассчитаем настоящую бизнес-метрику — conversion rate, или
CR. Это доля уникальных пользователей от пользователей в целом из таблицы
hotdog. Разделите число уникальных пользователей на число всех пользователей.
Используйте поле bracelet_id.
Дан шаблон:
 1. SELECT -- впишите сюда формулу 
2. ::numeric -- не удаляйте эту строку из-за особенностей деления
3. FROM hotdog;
Для проверки сначала получаю число уникальных пользователей и отдельно число всех пользователей, вот так:
 1. SELECT  
2. COUNT(DISTINCT(bracelet_id)) as unic,
3. COUNT(bracelet_id)
4. ::numeric -- не удаляйте эту строку из-за особенностей деления
5. FROM hotdog
Результат:
 Результат 
unic count
130 870
Теперь делю одно на другое:
 1 SELECT  
2 (count(DISTINCT(bracelet_id))/COUNT(bracelet_id)) as CR
3 ::numeric -- не удаляйте эту строку из-за особенностей деления
4 FROM hotdog
Ругается вот так:
 Результат 
syntax error at or near "::"

SELECT
(count(DISTINCT(bracelet_id))/COUNT(bracelet_id)) as CR
::numeric -- не удаляйте эту строку из-за особенностей деления
^^^
FROM hotdog
А если строку 3 ::numeric закомментировать, не ругается, производит деление, но вот так:
 Результат 
cr
0
Подскажите, пжл, в чем эти два косяка?
Голосование за лучший ответ
Зеленая бяка Просветленный (41307) 1 год назад
:: numeric - это приведение к вещественному типу какого-то значения. В варианте, где ругается ты никакое значение не приводишь, вот и ругается. Думаю, нужно привести первое значение к numeric, второе будет приведено неявно, но это не точно, возможно надо привести к numeric оба значения.
 SELECT   
(count(DISTINCT(bracelet_id))::numeric/COUNT(bracelet_id)) as CR
FROM hotdog
Попробуй так
DoratorУченик (217) 1 год назад
Епрст... Получилоооось!!!
Низкий поклон!
ЕленаУченик (128) 10 месяцев назад
А как эту задачу решить?
Важный маркетинговый показатель — средний чек. Это число, которое показывает, сколько денег в среднем тратит покупатель на один заказ.
Отдел маркетинга исследует изменение этого показателя по двум отделам (поле department) : кружащиеся ураганы и пылающие драконы. В таблице названия отделов записаны как whirling_hurricanes и blazing_dragons.
ЕленаУченик (128) 10 месяцев назад
Продолжение задачи
Выгрузите четыре поля: fin_date, department, revenue и orders. Укажите условие: отделы должны соответствовать запросу маркетинга.
Елена, SELECT fin_date, department, revenue, orders FROM finances WHERE department = 'whirling_hurricanes' or department = 'blazing_dragons'
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263840) 1 год назад
Операторы приведения должны следовать в одной строке
Валерия Воронцова Ученик (103) 6 месяцев назад
SELECT COUNT(DISTINCT(bracelet_id))/COUNT(bracelet_id)
::numeric
FROM hotdog
вот правильный код.
Похожие вопросы