当前位置: 首页 > 面试题库 >

使用mysql group by显示count为0的行

墨宜人
2023-03-14
问题内容

我在MySql Company中有两个表:(cname,city)工作:(ename,cname,salary)

我想显示每个公司的员工人数,即使该人数为零。

例如

Company : 
Microsoft Bangalore
IBM       NY

works : 
emp1 Microsoft 10000
emp2 Microsoft 90000

输出应为:

Microsoft 2
IBM 0

但是以下查询和其他类似查询仅显示那些至少拥有一名员工的公司:

Select count(*) from works natural join company group by company.cname

如果我使用外部联接,则员工数为零的公司仍将显示在一行中,因此该选项也将退出。

怎么做?


问题答案:

LEFT JOIN的经典案例:

SELECT
  c.cname,
  COUNT(w.ename) wcount 
FROM
  company c
  LEFT JOIN works w ON c.cname = w.cname
GROUP BY
  c.cname


 类似资料:
  • 问题内容: 以下查询仅返回已下订单的区域的“区域名称”。 如何修改它,以便即使“ COUNT”为“ 0”时也显示所有区域名称? 问题答案: 您需要将Regions更改为Regions或将Regions作为表,然后从此处更改为其他表。 我喜欢第二种方法,因为它对我来说似乎更直观。您在这里关心地区,并试图获取有关地区的信息,因此应该在(IMO)中:

  • SQL Server 2008 SQL查询显示IP地址(如果存在) 输出 IP_ADDR1_TEXT是 列强制转换(IP_ADDR1<0则0xFFFFFFFFF+IP_ADDR1否则IP_ADDR1 END/256/256/256&0xFF为VARCHAR)+“.”+强制转换(IP_ADDR1<0则0xFFFFFFFF+IP_ADDR1否则IP_ADDR1结束/256/256和0xFF为VARCH

  • 问题内容: 我有两个表,一个是Employee,而邮寄Subscriptions Employee则如下所示: 名称(pk)| 姓| 年龄 邮件订阅 MailId(pk)| EmployeeName(fk)|描述| 日期 我想为每个客户订阅号,因此我尝试了以下查询: 它将为我提供邮件订阅中 具有 条目的每个员工的所有计数。 我的问题是我想查看所有员工的计数,包括没有条目的员工数(因此显示为0),我

  • 问题内容: 我在数据库中有下表: 现在,如果我运行以下查询: 我得到以下输出: 输出显示的所有值,以及每行中返回的值。 现在,如果我运行以下查询: 我得到以下输出: 我的问题是,在第一个示例中输出第二个 Diane的 功能与功能之间有什么区别? __ 问题答案: 是一个聚合函数,通常与子句结合使用。 是输出当前日期的日期函数。 据我所知,只有MySQL允许使用此语法而不使用该子句。由于您没有提供,

  • 问题内容: 我将ajax与jquery一起使用,当我尝试在弹出窗口中显示结果时。然后警报始终显示 编辑: 问题答案: 尝试在函数的最后一行添加或。

  • 问题内容: 我正在尝试使用testNG执行我的测试脚本并尝试以下代码,但是在控制台中针对运行,失败和跳过显示0。因此,我无法在脚本中验证结果。 Java: 我正在通过testng.xml文件执行上述脚本。 控制台结果: 问题答案: 您的代码块中有一个小错误。当您在注解中使用和编写方法时,我们应使用定义适当的方法 。我使用了自己的代码,并简单地将 返回类型 添加为 void ,如下所示: 当以方式执