Выберите всех клиентов, которые сделали бронирование каждый месяц в предыдущем году - PullRequest
0 голосов
/ 19 мая 2018

Conceptual Model

Я должен сделать SQL-запрос, который показывает всю информацию о клиентах, которые сделали резервирование каждый месяц в прошлом году, я думал об использовании группы по месяцам, а затемпосчитать количество групп.

Вот так: (Я не знал, как подсчитать количество групп)

Select *

From Cliente 

inner join Persona 

on Cliente.CEDULA = Persona.CEDULA

inner join Reserva

on Cliente.cedula = Reserva.CEDULA

Group BY DATEPART(MONTH, Reserva.FECHAINICIO); 

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Попробуйте с помощью приведенного ниже запроса, введите соответствующие имена столбцов для client.id_column, date_column

Select Month, COUNT(<<client.id_column>>) TotalCount
From Cliente
inner join Persona
on Cliente.CEDULA = Persona.CEDULA
inner join Reserva
on Cliente.cedula = Reserva.CEDULA
where  Reserva.<<date_column>>  >= '2017-01-01' 
AND     Reserva.<<date_column>>  <= '2017-12-31'
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Reserva.<<date_column>>), 0), as Month; 
0 голосов
/ 19 мая 2018

Предполагая, что cedula идентифицирует клиента, вам не нужны все объединения.Тогда ключом является дата арифметической части и агрегации:

select r.cedula
from Reserva r
where r.fechainicio >= trunc(sysdate, 'YYYY') - interval '1' year and
      f.fechainicio < trunc(sysdate, 'YYYY')
group by r.cedula
having count(distinct trunc(r.fechainicio, 'MM')) = 12;
0 голосов
/ 19 мая 2018

Вы ищете count()?

Select DATEPART(MONTH, Reserva.FECHAINICIO), count(*)

From Cliente 

inner join Persona 

on Cliente.CEDULA = Persona.CEDULA

inner join Reserva

on Cliente.cedula = Reserva.CEDULA

Group BY DATEPART(MONTH, Reserva.FECHAINICIO); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...