【问题标题】:Get id with most records in the table获取表中记录最多的id
【发布时间】:2022-01-06 17:05:11
【问题描述】:

表格名称:办公室

CompanyID   OfficeLocation
01          USA
01          Africa  
03          USA
04          USA
04          Israel 
04          Germany
05          Africa

我需要获取该表中记录最多的 CompanyID(上表为 04) 我试过了:

SELECT CompanyID
GROUP BY CompanyID
HAVING COUNT(*) = ( 
    SELECT COUNT (*) FROM EntitySite
    GROUP BY CompanyID
    ORDER BY COUNT(*) DESC
)

Dsnt 工作(

【问题讨论】:

    标签: mysql group-by count


    【解决方案1】:

    您可以使用下一个简单查询:

    SELECT CompanyID, COUNT(OfficeLocation) CountOfficeLocation
    FROM EntitySite
    GROUP BY CompanyID
    ORDER BY CountOfficeLocation DESC
    LIMIT 1;
    

    MySQL query online

    【讨论】:

      【解决方案2】:

      首先,问题是抽象的,数据没有明显的关系(不同的id有不同的国家),不知道计数时考虑什么id(第一个,最后一个或随机)。

      但是,这是我得到的查询,这将首先返回最常见的,最后返回最不常见的。

      SELECT CompanyID
      FROM
      (
          SELECT count(*) as c,
                 CompanyID
          FROM Offices
          GROUP BY CompanyID
      ) T
      ORDER BY c desc 
      

      【讨论】:

      • 我有带办公室的桌子,而我在其他桌子上有公司。我需要找到办公室最多的公司,也就是办公室表中记录最多的公司。因此,办公桌具有代表公司和办公地点的 ID。如果公司有 3 个办公室 - office 表中有 3 条记录具有相同的公司 ID,而其他列(如地址等)中有不同的内容。尝试了您的查询,但它返回了有 1 条记录的公司:/
      猜你喜欢
      • 2017-09-15
      • 2018-11-06
      • 2013-12-17
      • 1970-01-01
      • 2013-08-23
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多