Oracle/Mysql/Sql
Group by 알파벳 순으로 정렬 후 최종 1개만
gilnet
2011. 10. 6. 09:24
d dbid cid
ahn 116421 Aggie
ahn 116432 Annes
ahn 116443 Aqeee
akxkf 118461 강11
akxkf 118462 강22
akxkf 118463 강44
akxkf 118464 강55
이 데이터 에서
같은 id중에서 cid를 알파벳 순으로 정렬
시킨 후 가장 위에 것만 가져 오는 쿼리
WITH TEMP AS
(
SELECT 'ahn' AS ID, '116421' AS DBID, 'Aggide' AS CID FROM DUAL UNION ALL
SELECT 'ahn' AS ID, '116432' AS DBID, 'Annes' AS CID FROM DUAL UNION ALL
SELECT 'ahn' AS ID, '116443' AS DBID, 'Aqeee' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118461' AS DBID, '강11' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118462' AS DBID, '강22' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118463' AS DBID, '강44' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118464' AS DBID, '강55' AS CID FROM DUAL
)
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY CID) AS CHK
, ID
, DBID
, CID
FROM TEMP
) A
WHERE A.CHK = 1
ahn 116421 Aggie
ahn 116432 Annes
ahn 116443 Aqeee
akxkf 118461 강11
akxkf 118462 강22
akxkf 118463 강44
akxkf 118464 강55
이 데이터 에서
같은 id중에서 cid를 알파벳 순으로 정렬
시킨 후 가장 위에 것만 가져 오는 쿼리
WITH TEMP AS
(
SELECT 'ahn' AS ID, '116421' AS DBID, 'Aggide' AS CID FROM DUAL UNION ALL
SELECT 'ahn' AS ID, '116432' AS DBID, 'Annes' AS CID FROM DUAL UNION ALL
SELECT 'ahn' AS ID, '116443' AS DBID, 'Aqeee' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118461' AS DBID, '강11' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118462' AS DBID, '강22' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118463' AS DBID, '강44' AS CID FROM DUAL UNION ALL
SELECT 'akxkf' AS ID, '118464' AS DBID, '강55' AS CID FROM DUAL
)
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY CID) AS CHK
, ID
, DBID
, CID
FROM TEMP
) A
WHERE A.CHK = 1