MYSQL Присоединяйтесь к трем таблицам и группируйте по дате соединения

Я новичок в MySQL, так что проявите ко мне терпение!

У меня есть три стола

1-порядок

Order Id | Order Date 

2-пользователя

user Id | Registration date

3-соединение

user Id | Order ID

Я пытаюсь рассчитать коэффициент конверсии, сгруппированный по дате Коэффициент конверсии, например, 300 пользователей зарегистрировались в январе 2013 года, и 100 из них совершили одну или несколько покупок, коэффициент конверсии зарегистрированного пользователя в покупателя составляет 33%.

поэтому окончательный результат должен быть

Таблица

date    | number of registered users | number of orders | Conversion rate  

Jan-2011|            300             |         100      |     33%

Большое спасибо за помощь!

dofactory.com/sql/join
user9025311 20.04.2018 21:57

Вы говорите Jan 2013 в своем вопросе, но jan-2011 в желаемых результатах. Это тип или мне что-то не хватает?

JNevill 20.04.2018 21:57

Вы что-то пробовали?

ernesthm 20.04.2018 22:04

@JNevill это опечатка, я просто привел пример данных и как рассчитать коэффициент конверсии

John Deus 20.04.2018 22:23

@ernesthm Я пробую банкомат, но пока ничего не работает

John Deus 20.04.2018 22:23
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
5
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, что-то вроде этого вам понадобится:

select u.registrationDate as date, 
       count(distinct u.id) as number_of_registered_users,
       count(distinct o.id) as number_of_orders,
       round(count(distinct o.id)/count(distinct u.id)*100) as conversion_rate
from users u 
left join `Order` o on u.registrationDate = o.orderDate 
left join connection c on c.orderId = o.id and c.usersId = u.id
group by u.registrationDate;

См. SQL Fiddle.

Спасибо, он сработал, но он показывает мне каждый день, я хочу, чтобы он показывал мне только месяц и год, не могли бы вы мне помочь?

John Deus 20.04.2018 22:52

Спасибо, я понял это DATE_FORMAT (u.date_registered, "% y-% m")

John Deus 20.04.2018 22:58

Другие вопросы по теме