Я занимаюсь разработкой веб-приложения для системы бронирования.После того, как пользователь совершил бронирование, он переходит к этой таблице.
id | Promo_code | total | arrival_date | departure_date | booked_date
1 | ABC1 | 1000 | 2019-02-06 | 2019-02-10 | 2019-02-02
2 | ABC1 | 2500 | 2019-02-07 | 2019-02-11 | 2019-02-03
3 | ABC1 | 3000 | 2019-02-12 | 2019-02-15 | 2019-02-03
4 | ABC2 | 5000 | 2019-02-07 | 2019-02-11 | 2019-02-02
5 | null | 3000 | 2019-02-12 | 2019-02-15 | 2019-02-01
Здесь промо-код - это то, что подразумевает его название.Если пользователь не бронирует с промо-кодом, он равен нулю (5-я запись).Надеюсь, что остальные поля итоги, прибытие_дата, дата отправления и дата_бронирования понятны для вас.
Мой вопрос: я хочу создать отчет примерно такого типа.
promo_code | number_of_bookings | revenue | Average_length_of_stay | Average_depart_date | Average_reservation_revenue
ABC1 | 3 | 6500 | 3 | 5 | 2166
ABC2 | 1 | 5000 | 4 | 5 | 5000
Этот отчет называется доходом от промоотчет о коде.
Если я объясню, что происходит в этом отчете, то:
Средняя_длина_для_состояния = (дата отправления - дата прибытия) / число_дисков
Средняя_дата_дата = (дата_дата - забронировано_дата) / число_фот_буксов
Конечно, я мог как-то сгенерировать этот отчет по логике бэкэнда.Но мне было бы очень больно.Должен быть способ сделать запрос в SQL напрямую.
То, что я сделал до сих пор, это
SELECT promo_code ,count(*) as number_of_bookings,
sum(total) as revenue
FROM booking_widget.User_packages group by promo_code;
Я застрял с Average_length_of_stay, Average_depart_date и Average_reservation_revenue.Как получить средние значения, которые сгруппированы по выражению?