【问题标题】:Trouble grouping result from a max count根据最大计数对结果进行分组时出现问题
【发布时间】:2015-06-23 03:27:16
【问题描述】:

这是我可以拥有的数据示例

**Car Name     Brand Name**
 Megan           Renault
 Clio            Renault
 Clio            Renault
 Willys          Jeep
 Willys          Jeep
 Willys          Jeep

下面的 SQL 会给我一个显示的结果

Brand Name   Car 
JEEP         Willys

我想拥有每一个品牌名称和他们最好的租车。不是最好的。 希望有任何帮助。顺便说一句,我不知道如何使用内接头,所以如果解决方案可以使用where 子句,那就太棒了! (使用访问)

(想要的结果)

Brand Name   Car 
    JEEP         Willys
    RENAULT      Clio

--

  SELECT MARQUE.NOMMA AS [BRAND NAME], VEHICULE.MODELE AS [CAR NAME]
    FROM VEHICULE, MARQUE, LOUER
    WHERE MARQUE.CODEMA = VEHICULE.CODEMA
    AND VEHICULE.NOIMMAT = LOUER.NOIMMAT
    GROUP BY MARQUE.NOMMA, VEHICULE.MODELE, MARQUE.CODEMA
    HAVING COUNT(MARQUE.NOMMA) = ( SELECT max (NUMBER_OF_LOCATION)
                                    FROM (
                                            SELECT COUNT(MARQUE.NOMMA) as [NUMBER_OF_LOCATION]  
                                            FROM VEHICULE, MARQUE, LOUER
                                            WHERE MARQUE.CODEMA = VEHICULE.CODEMA
                                            AND VEHICULE.NOIMMAT = LOUER.NOIMMAT
                                            GROUP BY MARQUE.NOMMA, VEHICULE.MODELE


                                    ));

方案如下

Vehicule(NoImmat, Modèle, DateAchat, CodeG#, CodeMA#)
Louer(CodeC#, NoImmat#, DateDebLoc, DateFinLoc, KmDeb, KmFin
Marque(CodeMA, NomMA, PaysMA, DateCreationMA, CodeTYCO#)

【问题讨论】:

    标签: sql ms-access count group-by max


    【解决方案1】:

    我对您的数据进行了以下操作并得到了预期的结果:

    select car, brand 
    from (select distinct car, brand, count(*) as cnt
                 from test
                 group by car)
    group by brand
    having cnt = max(cnt)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-06
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      相关资源
      最近更新 更多