sql - 使用分组依据时如何区分记录?

标签 sql oracle group-by

哈o
我有一张 table (看下面),它有4条记录。请注意,ColumnA和ColumnB具有相同的值,而ColumnC和columnD将具有不同的值。

ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx      yy      AAA     333
xx      yy      BBB     555
xx      yy      AAA     333
xx      yy      BBB     555

我试图使用Group By查询选择整个记录,如下所示:
SELECT ColumnC from TableA GROUP BY ColumnC;

该查询仅向我显示ColumnC,但我的期望是不仅选择ColumnC,还要选择整个记录。

更新:我的预期输出是:
ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx      yy      AAA     333
xx      yy      BBB     555

我可以知道该怎么做吗?

谢谢 @!

最佳答案

在Oracle中:

SELECT  *
FROM    (
        SELECT  t.*,
                ROW_NUMBER() OVER (PARTITION BY columnC ORDER BY columnA) AS rn
        FROM    mytable
        )
WHERE   rn = 1

更改ORDER BY子句以控制将返回包含重复项的记录(现在返回columnA的值最小的记录)。

关于sql - 使用分组依据时如何区分记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899640/

相关文章:

mysql - MYSQL 中百分位数/排名的高效分配

oracle - SQLException 类似于归档程序错误。仅在内部连接,直到释放

java - 如何跟踪 Java Web 应用程序中的连接池 - DBMS_APPLICATION_INFO

python - 对 python pandas 数据框进行装箱 : extracting bin centers and the sum of another column

sql - 返回游标更快吗?

长时间运行的查询中的 SQL NOW()

sql - 多次选择查询,更改日期

Python tnsnames.ora 解析器

group-by - Elasticsearch:如何按查询以外的字段分组?

R - 基于日期列使用 group_by 进行平均计算?