【问题标题】:Max count SQL Server最大计数 SQL Server
【发布时间】:2016-03-27 20:50:13
【问题描述】:

我将用一个实际的例子来解释我的问题,以便更容易想象这个问题。我已经建立了这个查询:

Select 
    E.Tipo_Esp, F.Nome, F.Apelido, 
    count (Ac.id_acto) as total_consultas 
from 
    Especialidade as E 
right join 
    Funcionario as F on F.id_Esp = E.id_Esp
inner join 
    Acto as Ac on Ac.id_func = F.id_func
inner join 
    TipoActo as TA on TA.id_Tipo_acto = Ac.id_Tipo_acto
where 
    TA.Descricao_Acto = 'Consulta'
group by 
    E.Tipo_Esp, F.Nome, F.Apelido
order by
    count(Ac.id_acto) DESC

得到以下结果:

Tipo_Esp  Nome  Apelido  total_consultas
Ortopedia Maria  Antonia  3
Ortopedia Luis   Cruz     1
Cirurgia  André  Martins  2
Cirurgia  Diogo  Martins  1

但是我需要到达的是:

Tipo_Esp  Nome  Apelido  total_consultas
Ortopedia Maria  Antonia  3
Cirurgia  André  Martins  2

意思是我只需要每个“Tipo_Esp”的更高计数。我试图将上述查询的最大计数函数作为子查询应用,但它确实如预期的那样顺利。有人可以帮我解决这个问题吗?提前致谢

【问题讨论】:

    标签: sql sql-server count max


    【解决方案1】:

    你可以这样做:

    with orig as (
      Select E.Tipo_Esp, F.Nome, F.Apelido, count (Ac.id_acto) as total_consultas from 
      Especialidade as E 
      right join Funcionario as F on F.id_Esp = E.id_Esp
      inner join Acto as Ac on Ac.id_func = F.id_func
      inner join TipoActo as TA on TA.id_Tipo_acto = Ac.id_Tipo_acto
      WHERE TA.Descricao_Acto = 'Consulta'
      GROUP BY E.Tipo_Esp, F.Nome, F.Apelido
      ORDER BY count(Ac.id_acto) DESC
    )
    select o.* 
    from orig o
    inner join (
      select tipo_esp, max(total_consultas) as maxtotal
      from orig
      group by tipo_esp
    ) t on o.tipo_esp = t.tipo_esp and o.total_consultas = t.maxtotal
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2020-07-26
      • 2015-06-25
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多