복붙노트

[SQL] 테이블에서 두 번째로 큰 또는 세 번째로 큰 항목을 얻는 방법

SQL

테이블에서 두 번째로 큰 또는 세 번째로 큰 항목을 얻는 방법

사람이 어떻게 N에게 오라클의 테이블에서 일 가장 큰 항목을 찾을 수 말해 주시겠습니까?

가장 큰 위해 우리는 또한 가장 큰 n 번째 찾을 수있는 효율적인 방법이 MAX (COLUMN_NAME)를 사용할 수 있습니다처럼?

해결법

  1. ==============================

    1.

    SELECT *
    FROM (
      SELECT some_column, 
             row_number() over (order by your_sort_column desc) as row_num
      FROM some_table
    ) t
    WHERE row_num = 3
    

    당신은 또한 순위를 사용할 수 있습니다 your_sort_column에서 같은 값을 (이 더 하나의 행보다 기대한다면) 함수 고르다 * FROM (   SELECT의 some_column,          row_rank 같은 랭크 () 이상 (your_sort_column 의해 내림차순 순서)   some_table FROM ) t WHERE row_rank = 3 이 migh 반환 둘 이상의 행 ..

  2. ==============================

    2.다음 쿼리를 사용하여 컬럼의 n 번째 큰 값을 찾을 수 있습니다

    다음 쿼리를 사용하여 컬럼의 n 번째 큰 값을 찾을 수 있습니다

    SELECT * FROM TableName a WHERE 
    n = (SELECT count(DISTINCT(b.ColumnName))
    FROM TableName b WHERE a.ColumnName <=b.ColumnName);
    
  3. ==============================

    3.나는 쿼리 아래는 NOT IN과 두 번째로 높은 기록을 찾기 위해 작동합니다 생각합니다.

    나는 쿼리 아래는 NOT IN과 두 번째로 높은 기록을 찾기 위해 작동합니다 생각합니다.

    테이블에서 SELECT MAX (userId를) WHERE (테이블에서 SELECT MAX (userId를)) userId를 NOT IN

    간단하고 유용한 ...

  4. ==============================

    4.두 번째로 큰 급여 사용 내용 :

    두 번째로 큰 급여 사용 내용 :

    select salary from 
      (select s2.salary,rownum rm from
         (select distinct salary from employees order by salary desc)
      s2 where rownum<=2)
    where rm >= 2
    
  5. ==============================

    5.그것은 두 번째로 높은 연봉 작동

    그것은 두 번째로 높은 연봉 작동

    $query = "SELECT * FROM `table_name` ORDER BY field_name` DESC LIMIT 1 , 1 "; 
    
  6. ==============================

    6.당신은 열 이름으로 주문할 수 있습니다 다음 LIMIT 1,1 번째를 얻을 수

    당신은 열 이름으로 주문할 수 있습니다 다음 LIMIT 1,1 번째를 얻을 수

    편집하다

    으악, 오라클 태그를 보지 못했다, 죄송합니다. ROWNUM = 2가 더 잘 작동해야 열 이름 BY ORDER.

  7. ==============================

    7.

    SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = (
      SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal<=b.sal
    );
    

    당신이 수를 필요로 교체 & N. 예를 들어, 2는 당신에게 두 번째로 큰 급여를 제공 할 것입니다.

    당신은 PL / SQL을 사용하는 경우, 그냥 문을 실행합니다. 그것은 N.에 대한 메시지를 표시합니다

  8. ==============================

    8.이 시도:

    이 시도:

    SELECT DISTINCT TOP 3 id,[Password] 
    FROM Users_changepassword 
    WHERE [UserId] = 3
    ORDER BY id DESC
    
  9. ==============================

    9.이 시도,

    이 시도,

    SELECT Sal FROM Tab ORDER BY Sal DESC LIMIT 2,1
    
  10. ==============================

    10.당신은 ROW_NUMBER () 오라클 SQL의 기능을 사용이 SQL을 시도 할 수 있습니다

    당신은 ROW_NUMBER () 오라클 SQL의 기능을 사용이 SQL을 시도 할 수 있습니다

    select column_name from (
     select column_name ,  
    row_number() over (order by column_name  desc) as  row_num  
    from table_Name ) tablex
    where row_num =3
    
  11. ==============================

    11.

    SELECT MAX(Salary) FROM Employee
    WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee)
    
  12. ==============================

    12.당신은 PRIOR으로하여 연결을 사용할 수 있습니다 :

    당신은 PRIOR으로하여 연결을 사용할 수 있습니다 :

    CREATE TABLE t(i INT, sal INT);
    INSERT INTO t(i, sal)
    SELECT 1,100 FROM dual UNION
    SELECT 2,100 FROM dual UNION
    SELECT 3,200 FROM dual UNION
    SELECT 4,500 FROM dual UNION
    SELECT 5,1000 FROM dual;
    

    질문:

    SELECT level, MAX(sal) AS sal
    FROM t
    --WHERE level = 2 -- set position here
    CONNECT BY prior sal > sal
    GROUP BY level
    ORDER BY level;
    

    DB 휘티 d 혀라도

    DBFiddle Demo2

    편집하다:

    두 번째 접근 방식은 NTH_VALUE 분석 함수를 사용하는 것입니다 :

    SELECT DISTINCT NTH_VALUE(sal, 2) OVER(ORDER BY sal DESC
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
    FROM t;
    

    Dpfdl의 눈물

  13. from https://stackoverflow.com/questions/4483222/how-to-get-second-largest-or-third-largest-entry-from-a-table by cc-by-sa and MIT license