복붙노트

[SQL] SQL : 적어도 N 시간에 발생하는 열 값을 가진 행을 선택?

SQL

SQL : 적어도 N 시간에 발생하는 열 값을 가진 행을 선택?

"FNAME"와 "LNAME"나는 두 개의 열이있는 SQL 테이블 "유명 인사"가 가정 :

fname    | lname    
---------+-------  
Bill     | Clinton
Bill     | Gates
George   | Bush
George   | Clinton
Barack   | Obama

그 성 열 "LNAME"에 두 번 이상 나타납니다 테이블의 반환 각 사람의 성과 이름을 쿼리를 작성하려합니다. 어떻게하면이 SQL 쿼리를 작성하려면 어떻게해야합니까?

해결법

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

    1.

    SELECT fname, lname FROM Celebrities 
    WHERE lname IN 
     (SELECT lname FROM Celebrities 
      GROUP BY lname HAVING COUNT (lname) >1)
    
  2. ==============================

    2.

    SELECT a.*
      FROM CELEBRITIES a
      JOIN (SELECT c.lname
              FROM CELEBRITIES c
          GROUP BY c.lname
            HAVING COUNT(*) >= 2) b ON b.lname = a.lname
    
    SELECT a.*
      FROM CELEBRITIES a
     WHERE EXISTS (SELECT NULL
                     FROM CELEBRITIES c
                    WHERE c.lname = a.lname
                 GROUP BY c.lname
                   HAVING COUNT(*) >= 2) 
    
  3. ==============================

    3.

    select fname, lname
    from 
      (
        select fname, lname, count(*) over(partition by lname) as lcount
        from Celebrities
      ) as S
    where lcount > 1
    

    다른 DBMS에서 SQL 서버에서 테스트 2008 년 마이트 작업을 지원하는 수 (*) 이상 (...)

  4. from https://stackoverflow.com/questions/5760335/sql-select-rows-with-a-column-value-that-occurs-at-least-n-times by cc-by-sa and MIT license