database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39425 게시물 읽기
No. 39425
최소 금액인 코드와 금액 구하기
작성자
1234
작성일
2012-04-27 12:59
조회수
4,704

WITH TMP AS (
SELECT 'A1' CD , 100 AMT FROM DUAL UNION ALL
SELECT 'A2' CD , -200 AMT FROM DUAL UNION ALL
SELECT 'A3' CD , -100 AMT FROM DUAL
)
위와 같은 TMP 테이블이 있습니다.
원하는 결과는 0 보다 작은 코드와 금액인데 하나의 로우만 보여져야 합니다.
꼭 최소 금액일 필요는 없지만 (A3 , -100 을 구해도 되지만) 가급적 최소 금액을 구해보려 합니다.
세가지 쿼리를 작성하여 보았는데
[3번-쿼리]는 0보다 작은 임의의 값을 구하는거라 왠지 좀 꺼려지네요..
여튼. 어떻게 하던지
VIEW로 묶지 않고는 안되네요.....
VIEW로 묶지 않고 하는 방법은 없는건가요?
더 좋은 방법이 있는지 궁금합니다.


/* [1번-쿼리] ROW_NUMBER() 를 이용 하여 A2 , -200 을 구함. */
WITH TMP AS (
SELECT 'A1' CD , 100 AMT FROM DUAL UNION ALL
SELECT 'A2' CD , -200 AMT FROM DUAL UNION ALL
SELECT 'A3' CD , -100 AMT FROM DUAL
)
SELECT *
FROM (
   SELECT CD , MIN(AMT)
   ,   ROW_NUMBER() OVER(ORDER BY MIN(AMT)) AS RN
   FROM   TMP
   WHERE  1 = 1
   GROUP  BY CD
)
WHERE  1 = 1
AND    RN = 1


/* [2번-쿼리] ORDER  BY를 이용 하여  A2 , -200을  구함. */
WITH TMP AS (
SELECT 'A1' CD , 100 AMT FROM DUAL UNION ALL
SELECT 'A2' CD , -200 AMT FROM DUAL UNION ALL
SELECT 'A3' CD , -100 AMT FROM DUAL
)
SELECT *
FROM (
   SELECT CD , MIN(AMT)
   FROM   TMP
   WHERE  1 = 1
   GROUP  BY CD
   ORDER  BY MIN(AMT)
)
WHERE  1 = 1
AND    ROWNUM = 1


/* [3번-쿼리] HAVING을 이용 하여 0 보다 작은 임의의 로우를 구함. */
WITH TMP AS (
SELECT 'A1' CD , 100 AMT FROM DUAL UNION ALL
SELECT 'A2' CD , -200 AMT FROM DUAL UNION ALL
SELECT 'A3' CD , -100 AMT FROM DUAL
)
SELECT *
FROM (
   SELECT CD , MIN(AMT)
   FROM   TMP
   WHERE  1 = 1
   GROUP  BY CD
   HAVING MIN(AMT) < 0
)
WHERE  1 = 1
AND    ROWNUM = 1


 

이 글에 대한 댓글이 총 1건 있습니다.

제가 문제 이해를 못했는지 모르겠지만..

금액이 0보다 작은거 중 하나만 보여준다면

SELECT TOP 1 *

  FROM TMP

WHERE AMT < 0

이렇게 하면 될것 같고  최소금액을 보여줄려면

ORDER BY AMT 만 추가해 주면 될것 같습니다.

CD마다 0보다 작은 금액을 보여 줄려고 하시는건가요??

 

 

하다지웠네님이 2012-04-27 17:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39428차변 대변
정연호
2012-04-30
4579
39427행을 열로 변경하기 ㅠㅠ [1]
포스
2012-04-30
5640
39426sql 쿼리 도움좀( 두가지 조건 만족하는 쿼리) [1]
초보
2012-04-29
4116
39425최소 금액인 코드와 금액 구하기 [1]
1234
2012-04-27
4704
39423sql 쿼리 문의 좀 드립니다. [3]
하동우
2012-04-27
4593
39422최근 데이터를 가져와서 정렬 하는 쿼리 문의 [2]
정용석
2012-04-27
4548
39421두개의 조건을 만족하는 값을 출력하는 sql 부탁드려요 ;; [2]
박철우이
2012-04-26
3992
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다