


Подвис с запросом SQL
Задача: Давайте рассчитаем настоящую бизнес-метрику — 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
Подскажите, пжл, в чем эти два косяка?
SELECT COUNT(DISTINCT(bracelet_id))/COUNT(bracelet_id)
::numeric
FROM hotdog
вот правильный код.
:: numeric - это приведение к вещественному типу какого-то значения. В варианте, где ругается ты никакое значение не приводишь, вот и ругается. Думаю, нужно привести первое значение к numeric, второе будет приведено неявно, но это не точно, возможно надо привести к numeric оба значения.
SELECT
(count(DISTINCT(bracelet_id))::numeric/COUNT(bracelet_id)) as CR
FROM hotdog
Попробуй так
SELECT COUNT(DISTINCT(bracelet_id))::numeric/COUNT(bracelet_id) as cr
FROM hotdog;
Операторы приведения должны следовать в одной строке