从下表中,如何为每个重复的CODE
提取USERID
列的最小值。
USER_ID | CODE | ROW_ID | NAME
1111111111 | -0.118 | 1 | USER1
1111111111 | 91.528 | 2 | USER2
2222222222 | 92.41 | 3 | USER3
2222222222 | 10.85 | 4 | USER4
2222222222 | 56.02 | 5 | USER5
3333333333 | -0.324 | 6 | USER6
3333333333 | 12.78 | 7 | USER7
4444444444 | 0.0002 | 8 | USER8
4444444444 | -1.324 | 9 | USER9
5555555555 | 93.598 | 10 | USER11
5555555555 | 101.35 | 11 | USER12
5555555555 | -5.425 | 12 | USER13
我尝试了以下查询,但仅获取USER_ID
和MIN(CODE)
。如何获得如下输出的整行?
SELECT USER_ID, min(CODE) minCODE
FROM TABLE1
GROUP BY USER_ID
输出应为:
USER_ID | CODE | ROW_ID | NAME
1111111111 | -0.118 | 1 | USER1
2222222222 | 10.85 | 4 | USER4
3333333333 | -0.324 | 6 | USER6
4444444444 | -1.324 | 9 | USER9
5555555555 | -5.425 | 12 | USER13
答案 0 :(得分:0)
您几乎就在那里,使用查询中的结果来获取另一个列数据
;WITH minvalue AS
(
SELECT USER_ID
, MIN(CODE) AS MinCode ¨
FROM TABLE1
GROUP BY USER_ID
)
SELECT t.USER_ID
, t.CODE
, t.ROW_ID
, t.NAME
FROM TABLE1 t
INNER JOIN minvalue mv ON mv.USER_ID = t.USER_ID
AND mv.MinCode = t.CODE
答案 1 :(得分:0)
试试这个
;with a as (
SELECT
*
,ROW_NUMBER() OVER(PARTITION BY USER_ID ORDER BY CODE) r
FROM TABLE1
)
SELECT *
FROM a
WHERE r = 1