Mat*_*013 4 sql oracle subquery sql-order-by greatest-n-per-group
我希望b的每个唯一值得到前1行,b的特定值的最小值为c.即使可以有超过1行具有相同的最小值(只选择第一行)
我试过这个查询
SELECT t1.*
FROM myTable t1,
(SELECT b,
MIN(c) as c
FROM myTable
GROUP BY b) t2
WHERE t1.b = t2.b
AND t1.c = t2.c
Run Code Online (Sandbox Code Playgroud)
但是,在该表中,对于给定的b值,可能存在多于1个c的最小值的实例.上述查询在这些条件下生成重复项.
我有一种感觉,我需要在某处使用rownum,但我不太确定在哪里.
你可以使用ROW_NUMBER:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY b ORDER BY c) AS rn
FROM myTable
) AS T1
WHERE rn = 1
Run Code Online (Sandbox Code Playgroud)