프로그래밍을 하면서 DB의 값들을 특정 점수에 대해 랭킹을 주고싶을 때가 있다. 이럴때마다 받아온 DB를 배열에 넣고 프로그래밍 상에서 랭킹을 구해 새로운 배열에 넣기도했는데, DB를 직접 수정할 수 있다면 아래의 방법을 사용하는것이 더 좋겠다.



먼저 공동1등이 2명이면 다음등수는 3등으로 나오게하는경우
select
rank() over (order by 필드명 desc) rank
from 테이블명 

아래는 공동1등이 2명이라도 다음 등수는 2등이되는경우
select
    dense_rank() over (order by 필드명 desc)  rank
from  테이블명

'Programming > Oracle' 카테고리의 다른 글

Mysql 계정 생성 및 외부 접속 설정  (0) 2012.04.23
Oracle listener.ora 등록 방법  (0) 2011.08.22
SQL 기본 문법  (0) 2011.04.20

http://www.statwith.pe.kr/

 

오라클 뿐만 아니라 다양한 함수들을 정리 해 놓았네요.

'IT World > Study' 카테고리의 다른 글

JAVA 한글 API  (3) 2011.03.24
무료 e-learning 센터  (2) 2011.03.24

1. JDBC 사용 기본 문법


 1) 가장 기본적인 문법.

 import java.sql.*;  //1. 임포트하자. 

public class JDBCTest {

public static void main(String[] args) {

//2. JDBC 드라이버 설치 (JAVA 설치되 경로의 ext 폴더에 넣어준다)

String driver = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@localhost:1521:XE";  //jdbc의 버전과 드라이버정보를 표기한 후 접속할 IP와 Port번호와 SID를 입력.

try{

Class.forName(driver);

}catch(ClassNotFoundException ex){

System.out.println("Class Not Found");

}

//3. Oracle DB에 Connection 하자.

//4. Statement  객체 생성하자.

//5. SQL 실행

// String sql = "SELECT SYSDATE FROM dual";

String sql = "Select zipcode, sido, gugun,dong,bunji From zipcode Where dong like '%야탑동%' Order by zipcode";

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try{

conn = DriverManager.getConnection(url,"scott","tiger");

stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

rs.next(); // rs값의 첫번째 값을 읽는다!

java.util.Date now = rs.getDate(1);

System.out.println(now);

}catch(SQLException ex){

System.out.println(ex);

}

//6. Close 하자

finally{

try{

if(conn !=null) conn.close();

if(conn !=null) stmt.close();

}catch(SQLException ex){

System.out.println(ex);

}

}

}

}


 2) DriverManager를 이용해 Driver를 등록하는 방법

 import java.sql.DriverManager;

import java.sql.SQLException;

public class JDBCTest {

public static void main(String[] args) {

//DriverManager를 이용한 Driver Loading

try{

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 

//deregisterDriver로 해제 가능

System.out.println("성공");

}catch(SQLException ex){}

}

}



 3) properties를 이용한 DB 정보 입력

 public DBBean(){//Constructor

info = new Properties();

try{

info.load(new FileInputStream("D:\\OracleRoom\\dbinfo.properties"));

}catch(IOException ex){

System.out.println(ex.toString());

}

}







2. Java 에서 DB의 접근 속도를 줄이는법.

 1) Prepared Statement

   - 처음 문장을 선언할 때 문법 검사를 하지않고 마지막 값을 넣을 때 문법 검사를 하기때문에 속도가 더 빠르다.

 Connection conn = bean.getConnection();

int[] deptnoArray = {50,60,70,80,90};

String[] dnameArray = {"전산실","영업부","관리부","자재부","총무부"};

String[] locArray = {"서울","부산","대전","광주","대구"};

String sql = "Insert into dept(deptno, dname, loc) Values (?,?,?)"; //값을 넣지 않고 지나간다.

PreparedStatement pstmt = conn.prepareStatement(sql);

for (int i = 0; i < 5; i++) {

pstmt.setInt(1, deptnoArray[i]);

pstmt.setString(2, dnameArray[i]);

pstmt.setString(3, locArray[i]);

int row = pstmt.executeUpdate();

System.out.println(row +"개의 행이 반영됨");

}

bean.connClose();


 2) Batch 파일 형태로 쿼리를 한번에 모와서 실행하는 방법

 Connection conn = bean.getConnection();

int[] deptnoArray = {50,60,70,80,90};

String[] dnameArray = {"전산실","영업부","관리부","자재부","총무부"};

String[] locArray = {"서울","부산","대전","광주","대구"};

Statement stmt = conn.createStatement();

for (int i = 0; i < 5; i++) {

String sql = "Insert into dept values("+deptnoArray[i]+",'"+dnameArray[i]+"','" +locArray[i]+"')";

stmt.addBatch(sql);   // 쿼리문 저장,

}

int [] row = stmt.executeBatch();  //한번에 실행

System.out.println(row.length+"개의 행이 반영되었습니다");

bean.connClose();


'Programming > JAVA' 카테고리의 다른 글

Using openCSV in JAVA  (0) 2013.11.20
이클립스 JSP plug in / 환경설정  (3) 2011.03.24
JDBC 설정  (2) 2011.03.24
JAVA IO  (1) 2011.03.24
JAVA Threads  (2) 2011.03.24

+ Recent posts