SQLite: вычисление из подзапроса - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть проблема: какая часть клиентов, заказавших в октябре, также заказала в сентябре?

Для уточнения расчета должен быть такой код:

Числитель: количество клиентов, которые заказалии в октябре, и в сентябре

Знаменатель: число клиентов, заказанных в октябре

Я написал этот запрос, но в качестве ответа я получил 1, что неверно. (t1 должно быть 2 customer_id и t2должно быть 10 customer_id, поэтому ответ должен быть 0.2 )

Я не могу понять, какая часть выдает ошибку.

select count(t1.customer_id)/count(t2.customer_id)*1.0

from ((SELECT *
       FROM shipping
       WHERE SUBSTR(transaction_date, 1, 2) IN ('09', '10')
       GROUP BY customer_id
       HAVING COUNT(DISTINCT SUBSTR(transaction_date, 1, 2)) = 2) AS t1,

      (SELECT *
       FROM shipping
       WHERE SUBSTR(transaction_date, 1, 2) IN ('10')
       GROUP BY customer_id) AS t2) ; 

1 Ответ

0 голосов
/ 26 апреля 2018

Чтобы выполнить деление с плавающей запятой, хотя бы одно из двух значений уже должно быть значением с плавающей запятой.*1.0 в конце выполняет преобразование после деления;Вы должны сделать это раньше:

select count(t1.customer_id)*1.0/count(t2.customer_id)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...