我有一桌学生:

id | age
--------
0  | 25
1  | 25
2  | 23

我想查询所有学生,并增加一个列,统计有多少学生是同龄学生:

id | age | count
----------------
0  | 25  | 2
1  | 25  | 2
2  | 23  | 1

最有效的方法是什么?I fear that a sub-query will be slow, and I'm wondering if there's a better way.有吗?

推荐答案

这应该是有效的:

SELECT age, count(age) 
  FROM Students 
 GROUP by age

如果您也需要id,您可以将上述内容作为子查询,如下所示:

SELECT S.id, S.age, C.cnt
  FROM Students  S
       INNER JOIN (SELECT age, count(age) as cnt
                     FROM Students 
                    GROUP BY age) C ON S.age = C.age

Sql相关问答推荐

优化SQL查询流

在postgresql中使用来自另一个字段的日期名称作为JSONB查询中的关键字

Select 最大值,但当并列时,从其他列 Select 最大值

使用占位符向SQL INSERT查询添加 case

将重复的值更新为下一个空闲数字

导出部分条形码字符串GS1-128

返回UPSERT中的旧行值

动态组/转置

根据是否出现过零来筛选数据(跨多行)

优化Postgres搜索未知长度的子串

Postgres jsonpath运算符的变量替换,如_regex?

为什么左联接结果在MS Access数据库中不匹配

将SQL Server查询改进为;线程安全;

Postgresql 具有相似行为和模式行为的问题

有没有办法在雅典娜中将字符串转换为 int ?

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

如何根据共同列值从两个表中包含列,但只包含左表中的行

Postgres更新增量之间的差异

函数调用作为插入值语句中的参数

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法