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

为什么COUNT()仅显示表格的一行?

史淇
2023-03-14
问题内容

pet在数据库中有下表menagerie

+--------+-------------+---------+------+------------+------------+
| name   | owner       | species | sex  | birth      | death      |
+--------+-------------+---------+------+------------+------------+
| Tommy  | Salman Khan | Lebre   | NULL | 1999-01-13 | 0000-00-00 |
| Bowser | Diane       | dog     | m    | 1981-08-31 | 1995-07-29 |
+--------+-------------+---------+------+------------+------------+

现在,如果我运行以下查询:

select owner, curdate() from pet;

我得到以下输出:

+-------------+------------+
| owner       | curdate()  |
+-------------+------------+
| Salman Khan | 2016-09-12 |
| Diane       | 2016-09-12 |
+-------------+------------+

输出显示的所有值owner,以及curdate()每行中返回的值。

现在,如果我运行以下查询:

select owner, count(*) from pet;

我得到以下输出:

+-------------+----------+
| owner       | count(*) |
+-------------+----------+
| Salman Khan |        2 |
+-------------+----------+

我的问题是,在第一个示例中输出第二个 Diane的 功能curdate()count()功能之间有什么区别?MySQL``owner __


问题答案:

COUNT()是一个聚合函数,通常与GROUP BY子句结合使用。

curdate() 是输出当前日期的日期函数。

据我所知,只有MySQL允许使用此语法而不使用该GROUP BY子句。由于您没有提供,COUNT(*)它将计算表中的总行数,并且该owner列将被随机选择/优化器默认值/按索引选择。

这应该是您的查询:

select owner, count(*) 
from pet
group by owner;

告诉优化器为 每个 所有者计算总行数。

当未提及group by子句时-聚合函数将应用于表的整个数据。

编辑: 每行将无法正常COUNT()使用计数,通常无法与分析函数配合使用->COUNT() OVER(PARTITION...)不幸的是,MySQL中不存在该函数。您的另一个选择是JOIN/CORRELATED QUERY为此附加列创建一个。

另一个编辑: 如果要在每个所有者旁边统计总数,则可以使用子查询:

SELECT owner,
       (SELECT COUNT(*) FROM pet) as cnt
FROM pet


 类似资料:
  • 我试图在一个Jasper报告中显示多个表,我使用子报告来实现这个功能。但我一直在显示几个子报告。实际上,只显示其中一个(第一个)。 以下是我的主report.jrxml: 下面是subjectSubreport.jrxml: 这是printersSubreport.jrxml: 当我切换子报告时,第一个报告正确显示,另一个报告消失。在JasperSoft Studio中,一切都很好,当我将它们导出

  • 我的图表在同一页上工作良好,但当我把不同的页面,只有第一个工作良好。 例如:page1.html page2.html JS 在这个代码中,因为它是同一个页面,所以Pen工作得很好。码本

  • 问题内容: 我在MySql Company中有两个表:(cname,city)工作:(ename,cname,salary) 我想显示每个公司的员工人数,即使该人数为零。 例如 输出应为: 但是以下查询和其他类似查询仅显示那些至少拥有一名员工的公司: 如果我使用外部联接,则员工数为零的公司仍将显示在一行中,因此该选项也将退出。 怎么做? 问题答案: LEFT JOIN的经典案例:

  • 我在Jaspersoft Studio中创建了一个示例报告 并将创建的报表发布到服务器连接。但当我打开服务器并检查发布的同一项时,它显示为空报表。为什么会这样?

  • 本文向大家介绍html直接输入多个空格为什么只能显示一个空格?相关面试题,主要包含被问及html直接输入多个空格为什么只能显示一个空格?时的应答技巧和注意事项,需要的朋友参考一下 该行为由 CSS white-space 控制,其默认值 normal 的表现即为多个空格压缩成一个。

  • 我安装凉亭 我正处于凉亭安装教程的第一步。没有什么我可以补充这个问题,除了我是全新的鲍尔,它没有预期的工作。 我完全重新安装了git/node。全部重新设置,然后回到这个问题