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

groupby和count如何在sql中工作

朱炳
2023-03-14
问题内容

1> select browser,count(*) from logtest group by browser;

+-----------+----------+
| browser   | count(*) |
+-----------+----------+
| Firefox 3 |       14 |
| Unknown   |       11 |
+-----------+----------+

套装2排

2> select browser,count(browser) from logtest group by browser;

+-----------+----------------+
| browser   | count(browser) |
+-----------+----------------+
| Firefox 3 |             14 |
| Unknown   |             11 |
+-----------+----------------+

套装2排

3> select browser,count(browser) from logtest;

+-----------+----------------+
| browser   | count(browser) |
+-----------+----------------+
| Firefox 3 |             25 |
+-----------+----------------+

一组1行

为什么查询方式1>和2>会得到相同的结果?count(*)和count(somefiled)之间没有什么区别?

另外,查询2>和3>导致的结果不同,为什么 groupby 如此神奇?它是如何工作的?

更新:我正在使用MySQL5.1。:)


问题答案:

选择会给您一个结果集。如果按字段分组选择,则结果集的行将按该字段分组,并且结果集的每一行将特定于结果组。

例如,您有一个名为Animals的表,其中包含以下字段:

Type | Gender | Name

如果您正在运行此查询(例如在MySQL中):

 select Type, Gender, Name from Animals where Type <> 'Pig'

您会得到所有不是“猪”的动物。如果某行的Type =’pig’,则该行将包含在结果中。

该查询:

select Type, Gender, count(*) from Animals group by Type, Gender

将有这么多行:类型数*性别数

您可以通过使用MySQL中的hading子句为您的组创建条件。

在这里阅读更多

count(*)和之间的区别count(browser)是,第一个将返回所有记录的数量,第二个将返回其中的所有记录的数量not (browser is null)

尝试在其中插入一行,browser is null然后运行1)和2),这是最好的测试。



 类似资料:
  • 问题内容: 我有一个这样的数据框说 和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量和的为1。 在无法输出所需结果后,我发现简单的调用函数。 我怎样才能做到这一点? 问题答案: 您似乎想一次按几列分组: 应该给你你想要的

  • 问题内容: 我有以下查询: 会有什么区别,如果我更换,所有呼叫count(column_name)到count(*)? 这个问题的灵感源于我如何在Oracle的表中找到重复的值?。 为了澄清接受的答案(也许我的问题),替换count(column_name)与count(*)将在包含一个结果返回额外的行null和计数null列中的值。 问题答案: 计数为而不是 [编辑]添加了此代码,以便人们可以运

  • 我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。

  • 现在我需要将一个结果按一些字段分组。 如何将count和groupBy添加到规范中的问题?或者,也许我需要创建一个谓词,在其中定义这个count和groupBy(不知何故),并为此制定一个规范?做这件事的更好的方法是什么? 更新#0 我尝试使用multiselect,但它还是选择了所有列。 如果我使用来定义要选择的列,它就可以工作,但是我需要它使用criteries API/specificati

  • 问题内容: 我正在尝试使用C#查找表的计数,但是我一直在获取 不存在数据时进行无效的读取尝试 我的代码: 我知道我与数据库之间存在有效的连接,因为我可以在许多地方进行读写操作,但是我无法正确读取数据库有何特别之处?我该如何填充? 问题答案: 您必须阅读: 或者,您可以只使用ExecuteScalar: 定义为: 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

  • 问题内容: 这个问题已经在这里有了答案 : 在SQL中,count(column)和count(*)有什么区别? (11个答案) 7年前关闭。 我有以下代码: 如果我将COUNT(*)替换为COUNT(’x’),结果或性能会有所不同吗? (这个问题是关系到一前一) 问题答案: 这么说,导致您的DBMS返回“列”简直是糊涂。 可能 很久以前就是这种情况,但是任何自重的查询优化器都会选择一些快速方法来