MYSQL:如何编写 sql 查询以查找最小值但具有与类别计数相同的值的计数

标签 mysql sql database-design

我想编写查询来检查存在多少个具有相同值的最小值以及每个类别的计数。 表格数据看起来像这样

Id  CatId   value
1    1      2.3
2    1      2.3
3    2      1.1
4    1      4.2
5    2      1.5
6    3      8.1
7    1      3.3
8    3      4.2
9    2      1.9

查询应该返回像这样的行


CatId   min(value)  count_with_same_min_value  count(CatId)
1           2.3         2                         4          
2           1.1         1                         3
3           4.2         1                         2


谢谢

最佳答案

您可以使用子查询来完成:

select c.catid, min(c.value),
       sum(c.value = cmin.minval),
       count(c.CatId)
from category c join
     (select catid, min(value) as minval
      from category
      group by catid
     ) cmin
     on c.catid = cmin.catid
group by c.catid;

或者在选择中使用 select:

select catid, min(value),
       (select count(*) from category c2 where c2.value = min(c.value)),
       count(CatId)
from category c
group by catid;

关于MYSQL:如何编写 sql 查询以查找最小值但具有与类别计数相同的值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18789749/

相关文章:

sql-server - 将所有 PK 和 FK GUID 列和关系转换为 int 的最快方法是什么?

Mysql选择用户好友喜欢

c# - linq to sql使用lambda连接多列

php - Laravel orderBy 出现列值错误

python - Django 用聚合平均值注释

python - 将 MySQL 表传输到另一台服务器的最佳实践?

sql - 主键还是唯一索引?

php - SQL 和 PHP 需要让查询工作

mysql - 试图将 MySQL 数据放入 d3 的嵌套 json 文件中?

c++ - mysql/c++ 连接器错误 : Connection using old (pre-4. 1.1) 身份验证协议(protocol)被拒绝