Sql 获取最小值并按id对组中的行进行计数
编辑我忘记了一个重要的细节 我有一个如下的postgresql表:Sql 获取最小值并按id对组中的行进行计数,sql,postgresql,Sql,Postgresql,编辑我忘记了一个重要的细节 我有一个如下的postgresql表: | id | n_1 | n_2 | | 1 | 3 | 5 | | 1 | 2 | 6 | | 1 | 8 | 4 | | 1 | 1 | 5 | | 2 | 4 | 3 | | 2 | 5 | 1 | 仅当n_2>=min(n_1)时,我想获取最小值和计数计数: | id | n_1 | n_2 | count | | 1 | 1 | 4 | 4
| id | n_1 | n_2 |
| 1 | 3 | 5 |
| 1 | 2 | 6 |
| 1 | 8 | 4 |
| 1 | 1 | 5 |
| 2 | 4 | 3 |
| 2 | 5 | 1 |
仅当n_2>=min(n_1)时,我想获取最小值和计数计数:
| id | n_1 | n_2 | count |
| 1 | 1 | 4 | 4 |
| 2 | 4 | 1 | 0 |
当n_2>=min(n_1)记录每个id时,n_1中的min数、n_2中的min数和count total
有什么帮助吗?这里是通过按id对它们进行分组来实现的方法:
select id , min(n_1) ,min(n_2), count(case when n_2 >= min_n_1 then 1 end)
from ( select *, min(n_1) over (partition by id) as min_n_1 from table) t
group by id
下面是如何通过按id对它们进行分组来完成此操作:
select id , min(n_1) ,min(n_2), count(case when n_2 >= min_n_1 then 1 end)
from ( select *, min(n_1) over (partition by id) as min_n_1 from table) t
group by id
我认为这只是一种聚合:
select id, min(n_1), min(n_2), count(*)
from t
group by id;
我认为这只是一种聚合:
select id, min(n_1), min(n_2), count(*)
from t
group by id;
对不起,我忘记了一个重要的细节并编辑了我的asksorry,我忘记了一个重要的细节并编辑了我的asksorry,我忘记了一个重要的细节并编辑了我的asksorryask@ItaloRodrigo查看我的最新答案对不起,我忘记了一个重要的细节并编辑了我的答案ask@ItaloRodrigo查看我的最新答案