SQL 문제들

SQL 세션 문제2(해결중)

jaman 2024. 10. 17. 23:35

1) 서버별, 월별 게임계정id 수를 중복값 없이 추출해주세요. 월은 첫 접속일자를 기준으로 계산해주세요. 월은 yyyy-mm의 형태로 추출해주세요.

힌트: 월을 추출하는 방법→날짜는 string(문자열) 형식으로 저장되어 있으므로, 문자열을 자르는 함수를 사용해주시면 좋겠죠? 😃

SELECT serverno, substr(first_login_date,1,7) as m, COUNT(DISTINCT game_account_id)

from basic.users u

group by SUBSTR(first_login_date,1,7), serverno

;

 

 ⭐️ Substr: 특정 문자 뽑아줌

 

 

 2. 질문하기

 

조건1) group by 를 활용하여 첫 접속일자별 게임캐릭터수를 중복값 없이 구하고, 조건2) having 절을 사용하여 그 값이 10개를 초과하는 경우의 첫 접속일자 및 게임캐릭터id 개수를 추출해주세요.

code:

select first_login_date, count(distinct game_actor_id)as actor_cnt

from basic.users

group by first_login_date

having count(distinct game_actor_id)>10

 

왜 ()를 having 뒤에 쓰는지 질문

 

 

3.

조건1) group by 절을 사용하여 서버별, 유저구분(기존/신규) 게임캐릭터id수를 구해주세요. 중복값을 허용하지 않는 고유한 갯수로 추출해주세요. 조건2) 기존/신규 기준→ 첫 접속일자가 2024-01-01 보다 작으면(미만) 기존유저, 그렇지 않은 경우 신규유저 조건3) 또한, 서버별 평균레벨을 함께 추출해주세요.

 

my code:

SELECT serverno,

case when first_login_date < 2024-01-01 then '기존유저'

else '신규유저' end as 'gb',

from basic.users u

 

-기존/신규 나눠서 개임케릭터id수, 서버별 평균레벨이 안 구해짐

 

answer code:

select serverno, case when first_login_date <'2024-01-01' then '기존유저'

else '신규유저' end as gb

,count(distinct game_actor_id)as actor_cnt

,avg(level)as avg_level

from basic.users

group by serverno, case when first_login_date <'2024-01-01' then '기존유저'

else '신규유저' end

 

 

4. 

 

조건1) 문제2번을 having 이 아닌 인라인 뷰 서브쿼리를 사용하여 추출해주세요.

 

(subquery 좀 더 보고 한번 더 보기)

 

내가 쓴거:

 

SELECT *

from (select first_login_date, count(distinct game_actor_id)as actor_cnt

from basic.users u

where count(DISTINCT game_actor_id >10)) as A

group by first_login_date

 

답:

 

select *

from( select first_login_date, count(distinct game_actor_id)as actor_cnt

from basic.users

group by first_login_date

)as a

where actor_cnt>10

 

왜 ?를 쓰냐?

() 안에 어떠한 것들을 써야 하는지 모르겠다

 

 

 

5.

조건1) 레벨이 30 이상인 캐릭터를 기준으로, 게임계정 별 캐릭터 수를 중복값 없이 추출해주세요. 조건2) having 구문을 사용하여 캐릭터 수가 2 이상인 게임계정만 추출해주세요. 조건3) 인라인 뷰 서브쿼리를 활용하여 캐릭터 수 별 게임계정 개수를 중복값 없이 추출해주세요.

 

'SQL 문제들' 카테고리의 다른 글

SQL 문제(Case, Join)  (0) 2024.11.21
SQL 문제들(join)  (1) 2024.11.20
SQL 문제들(join 문제들)  (0) 2024.11.19
sql 문제1  (0) 2024.11.16