了解sql中的简单计数逻辑

y4ekin9u  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(335)

我有一个很基本的问题,我不能自己回答,但不应该占用你太多时间。
下面的查询工作正常,它列出了所有 exhibition_category_id 并统计分配给每个类别的对象总数。
我的问题是:它为什么这么做?我不明白这个问题。上面写着 count(*) -为什么它不给我不同展览类别id的总数(79),而是计算每个类别分配了多少个对象?
下面是有问题的查询,以及实际输出的屏幕截图:

SELECT eb.exhibition_category_id, count(*) AS total 
FROM exhibition_brand eb 
GROUP BY eb.exhibition_category_id

https://i.stack.imgur.com/6demv.png
希望可以理解我的要求,渴望根据反馈改进我的帖子。干杯

v440hwme

v440hwme1#

您的查询是基本聚合查询:

SELECT eb.exhibition_category_id, count(*) AS total
FROM exhibition_brand eb
GROUP BY eb.exhibition_category_id;

这个 GROUP BY 指定结果集的每个值将包含一行 eb.exhibition_category_id . 结果集由两列组成,一列是定义行的值。另一个是每组的行数。那是什么 COUNT(*) 做。
如果你想知道 eb.exhibition_category_id ,那么你想要一排 COUNT(DISTINCT) :

select count(distinct eb.exhibition_category_id)
from exhibition_brand eb;
9w11ddsr

9w11ddsr2#

这个 GROUP BY 功能组 COUNT()eb.exhibition_category_id ,因此查询按 eb.exhibition_category_id ,然后统计相应的记录。

相关问题