首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一个表中获取特定值,分组相同的ID和相同的值?

如何从一个表中获取特定值,分组相同的ID和相同的值?
EN

Stack Overflow用户
提问于 2022-02-22 14:47:02
回答 1查看 45关注 0票数 -1

假设有这个表样例,并且有相同的ID和ValuesA组,我想要得到特定于记录的ValueB。让我展示一下:

使用数据库: Postgres

这是我的示例表,假设拆分(没有在代码中真正拆分我的表)为3组,我想得到以下情况:

代码语言:javascript
复制
+-----+--------+---------+
| ID  | ValueA | ValueB  |
+-----+--------+---------+
| 123 |     1  |   PIP   |
| 123 |     1  |   POP   |
| 123 |     1  |   PIP   |
| 456 |     2  |   COP-1 |
| 456 |     2  |   COP-2 |
| 456 |     2  |   COP-2 |
| 789 |     5  |   DIP   |
| 789 |     5  |   DOP   |
| 789 |     5  |   DIP   |
| 789 |     5  |   DIP   |
+-----+--------+---------+ 

案例1:

代码语言:javascript
复制
+-----+--------+--------+
| ID  | ValueA | ValueB |
+-----+--------+--------+
| 123 |     1  |   PIP  |
| 123 |     1  |   POP  |
| 123 |     1  |   PIP  |
+-----+--------+--------+

从这个表中,我只想得到这个值:

123 | 1 | POP

案例2

代码语言:javascript
复制
+-----+--------+----------+
| ID  | ValueA | ValueB   |
+-----+--------+----------+
| 456 |     2  |   COP-1  |
| 456 |     2  |   COP-2  |
| 456 |     2  |   COP-2  |
+-----+--------+----------+

从这个表中,我只想得到这个值:

456 | 2 | COP-1

案例3

代码语言:javascript
复制
+-----+--------+---------+
| ID  | ValueA | ValueB  |
+-----+--------+---------+
| 789 |     5  |   DIP   |
| 789 |     5  |   DOP   |
| 789 |     5  |   DIP   |
| 789 |     5  |   DIP   |
+-----+--------+---------+

我想从这个表中得到几次出现的记录,但不能是第一个或最后一个记录。

789 | 5 | DIP

我想得到3个查询,每个查询的结果。

请帮帮我。

我尝试了几种方式,但我仍然没有建立e方法或正确的陈述。

这里有一种方法可以用PostgreSQL代码来实现,还是像Python这样的脚本代码?

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 08:50:18

第一种方法:

代码语言:javascript
复制
WITH added_row_number AS (
  SELECT *,
    ROW_NUMBER() OVER(PARTITION BY ValueA ORDER BY Id DESC) AS row_number
  FROM table
)
SELECT *
FROM added_row_number
WHERE row_number = 1 and ValueB ilike 'POP'

第二种方法:

代码语言:javascript
复制
with added_row_number as (
select *,
row_number() over(partition by "Id" order by "Id") as row_number
from table 
)
select * from added_row_number
where "Id" in (
    select "Id"  
    from added_row_number 
    group by "ValueA"   
)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71223359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档