2014-10-20 2 views
-5

데이터베이스에 20 개 이상의 다른 영화와 동일한 첫 단어가 몇 개 있는지 계산하는 SQL 쿼리를 작성해야합니다. 23 영화 타이틀의 첫 번째 단어 '슈렉'을 포함하고 26 영화 제목 단어 'PUPPY'를 포함하는 경우SQL 동일한 첫 단어가 포함 된 값의 개수를 검색 하시겠습니까?

예를 들어, 출력이 보일 것 같은

First_Word ________Count

SHREK   23 
    PUPPY   26 
사용
+2

뭔가를 시도하는 항상 시작하는 첫 번째 장소 ... –

+0

죄송 사람은 내가 여러 가지 방법을 시도했지만 그들 중 누구도 그렇게 일하지 나는 –

답변

1
SELECT SUBSTR(FILM_TITLE, 1, INSTR(FILM_TITLE, ' ', 1) - 1), 
     COUNT(*) 
    FROM FILM_TABLE 
GROUP BY SUBSTR(FILM_TITLE, 1, INSTR(FILM_TITLE, ' ', 1) - 1) 
HAVING COUNT(*) >= 20; 
1

REGEXP_SUBSTR

WITH DATA AS(
SELECT 'SHREK THE MOVIE' str FROM dual UNION ALL 
SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
SELECT 'SHREK THE MOVIE' FROM dual UNION ALL 
SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
SELECT 'SHREK THE MOVIE' FROM dual 
) 
SELECT regexp_substr(str, '\w+') sub_str, count(*) sub_str 
FROM DATA 
GROUP BY regexp_substr(str, '\w+') 
/

SUB_STR   SUB_STR 
--------------- ---------- 
SHREK     3 
PUPPY     2 

SQL> 
SUBSTR + INSTR

WITH DATA AS(
SELECT 'SHREK THE MOVIE' str FROM dual UNION ALL 
SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
SELECT 'SHREK THE MOVIE' FROM dual UNION ALL 
SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
SELECT 'SHREK THE MOVIE' FROM dual 
) 
SELECT SUBSTR(str, 1, INSTR(str, ' ', 1) - 1) sub_str, count(*) 
FROM DATA 
GROUP BY SUBSTR(str, 1, INSTR(str, ' ', 1) - 1) 
/

SUB_STR   COUNT(*) 
--------------- ---------- 
SHREK     3 
PUPPY     2 

SQL> 

한 단어 영화 이름 업데이트

을 사용하여3210

, 위의 SUBTR + INSTR 방법은 실패합니다. 문제를 해결하려면 CASE 구조를 사용해야합니다.

SQL> WITH DATA AS(
    2 SELECT 'SHREK' str FROM dual UNION ALL 
    3 SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
    4 SELECT 'SHREK THE MOVIE' FROM dual UNION ALL 
    5 SELECT 'PUPPY THE MOVIE' FROM dual UNION ALL 
    6 SELECT 'SHREK THE MOVIE' FROM dual 
    7 ) 
    8 SELECT 
    9 CASE 
10  WHEN INSTR(str, ' ', 1) = 0 
11  THEN str 
12  ELSE SUBSTR(str, 1, INSTR(str, ' ', 1) - 1) 
13 END sub_str, 
14 COUNT(*) 
15 FROM DATA 
16 GROUP BY 
17 CASE 
18  WHEN INSTR(str, ' ', 1) = 0 
19  THEN str 
20  ELSE SUBSTR(str, 1, INSTR(str, ' ', 1) - 1) 
21 END 
22/

SUB_STR   COUNT(*) 
--------------- ---------- 
SHREK     3 
PUPPY     2 

SQL> 
+0

만 결함이 하나의 단어 영화를 함께 업로드 할 귀찮게하지 않았다! '정규식 만이 그것을 전달 .. –

+0

@MaheswaranRavisankar, 좋은 잡기. 답변을 업데이트했습니다. –

+0

같은 이름의 영화는 20 개를 초과 할 수 없습니다 : P – Nitish

관련 문제