【问题标题】:Select all clients that have made a reservation each month in the previous year选择上一年每月进行过预订的所有客户
【发布时间】:2018-05-19 04:39:26
【问题描述】:

我必须进行一个 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); 

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    假设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;
    

    【讨论】:

      【解决方案2】:

      你搜索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); 
      

      【讨论】:

        【解决方案3】:

        尝试使用以下查询,为 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; 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-20
          • 2019-09-18
          • 2020-07-04
          相关资源
          最近更新 更多