개발/기타 개인 공부 7

게임이 가져야 하는 6가지 요소

게임을 포함한 전반적인 유흥/놀이에 대한 이론에 궁금증을 가졌던 적이 있었다. 이에 게임을 이해하기 위해, 그리고 필자가 어떠한 방식으로 게임을 대하고 있는지 구체적으로 명시하기 위해 몇몇 철학자/게임학자들의 말을 빌려 게임이 가지고 있는 요소들에는 어떤 것들이 있는지 살펴보는 시간을 가져보자. 게임이 가지고 있는 공유점 - 버나드 슈츠의 ‘게임의 자세, 제약과 불편의 자발성 수용’에서 발췌됨 1. 구체적인 목표가 제시됨. 그 구체적 목표를 달성하기 위해 할 수 있는 일을 제시함 이는 디지털 게임으로 하면 단순히 퀘스트가 되겠다. 하지만 마인크래프트 같은 샌드박스형 게임에서는 플레이어 주도적으로 목표를 찾아 이를 해결하는 과정에서 재미를 느낄 수도 있을 것이다. 2. 규칙이 존재함 이동과 아이템의 획득과..

SQL 기본 6. 서브 쿼리(Subquery, Where 절)

당초에 해당 내용은 나중에 공부할 계획이었지만 SQL 구문의 여러 예시와 실습을 진행하면서 서브 쿼리가 간간히 사용되는 것을 알 수 있었다. 본인이 희망하는 분야인 데이터 분석(Analytic SQL) 파트에서는 그렇게 부각되는 내용은 아니다만, 다른 코드나 논리적인 쿼리문을 작성하고자 할 때 충분한 윤활유 역할을 해줄 수 있을 것 같아 추가적으로 서브 쿼리에 대한 공부를 시작하게 되었다. 서브 쿼리를 사용한다면 대용량 데이터를 처리하는 입장에서 성능이 저하될 우려가 있음. 이는 서브 쿼리 자체의 문제인 코드가 길어진다는 점과 결부된다. 서브 쿼리가 정확히 뭘까? 서브 쿼리는 하나의 쿼리 내에 또 다른 쿼리가 포함되는 쿼리를 의미한다. 서브 쿼리는 기본적으로 메인 쿼리(Main Query) 내에 포함되어..

SQL 기본 5. Group by 응용(가공 컬럼, case when/rollup/cube)

4장에서 group by에 대하여 다음과 같은 설명을 한 바 있다. Select 절에는 group by 절에 기술된 컬럼의 이름(또는 가공된 컬럼)과 집계 함수만 사용되어야 한다. 그 외의 것들이 있을 경우에는 오류를 발생 4장에서 간단하게 짚고만 넘어갔지, 실제 이 '가공된 컬럼'이란 무엇인지에 대해서는 해당 장에서 상세히 짚고 넘어가고자 한다. 가공된 컬럼을 이용한 group by절 응용 앞서 소개한 바와 같이 group by 절에는 기술된 컬럼 외에도 다음과 같은 가공 컬럼이 올 수 있다. select *, to_char(a_date, 'yyyy') as a_year from a_table group by to_char(a_date, 'yyyy'); -- a_date 컬럼의 년도값을 기준으로 그룹핑..

SQL 기본 4. 그룹/집계 함수의 이해

데이터 분석을 함에 있어서 데이터를 묶는 Join과 더불어 양대산맥 위치쯤에 있는 Group by, Aggregation 함수라 카더라. 일단 group by가 뭐 하는 함수인지 대충 살펴보고 넘어가자. Group by는 뭐하는 거야? group by는 특정 컬럼의 똑같은 값을 기준으로 그룹핑을 해주는 키워드 group by 키워드 다음으로 적힌 컬럼 값으로 그룹화를 하면 다른 집계 함수(Aggregation function)와 함께 사용할 수 있음 이는 다시 말해? Select 절에는 group by 절에 기술된 컬럼의 이름(또는 가공된 컬럼)과 집계 함수만 사용되어야 한다. 그 외의 것들이 있을 경우에는 오류를 발생 여기서 가지는 그룹핑의 또 한 가지 특징! 💡특정 컬럼을 이용하여 그룹핑을 진행할 경..

SQL 기본 3. 시간 정보와 추출(Date, Timestamp, Time, Interval)

SQL에서는 크게 네 가지의 시간과 관련한 타입이 존재한다. (정확히는 현재 필자가 공부하고 있는 PostgreSQL을 기준으로) 1. Date : '일자'의 의미로 년,월,일의 정보만 가진다. 타입은 'YYYY-MM-DD'의 방식 문자열을 Date 형식으로 반환해주는 to_date to_date('2022-12-20','yyyy-mm-dd') 상기 '2022-12-20'는 문자열 정보이다. 날짜에 대한 정보는 하나도 가지고 있기 않기에 이를 to_date 함수를 이용하여 Date 타입으로 반환시켜주어야 올바른 사용이 가능하다. 반대로 Date 타입을 문자열로 변환하고 싶을 때는 to_char 함수를 사용한다. to_char(saldate, 'yyyy-mm-dd') -- saldate의 타입은 Date인..

SQL 기본 2. Outer/Non Euqi Join

Inner Join은 뭔데? 첫 번째 장에서 다루었던 Join에 대한 내용이 Inner Join에 대한 내용이었다. 테이블 A와 B의 Join 방향은 어느 방향으로 가든 그 결과는 같다는 이야기 또한 했던 것으로 기억 이야기를 하기에 앞서서 Inner/Outer의 근본 개념 💡 A → B로 Join 되는 Table이라 할 때, A가 B 속으로 들어간다 하여 A를 Outer, B를 Inner라 칭한다. 여기서 Inner가 의미하는 것은 내부. 즉, A와 B가 모두 속하는 키값이 존재하는 경우에만 M 집합의 테이블을 구성하여 반환하는 것을 의미한다(1:M Join 기준). 상기 테이블은 키값이 되는 customer_id와 customer의 컬럼을 이용하여 Join을 시킨 결과이다. 결과에서도 보다시피 각각의..

SQL 기본 1. Join 메커니즘(Inner)

Join은 관계형 데이터베이스에서 가장 기본이자 중요한 기능 두 개 이상의 테이블을 서로 연결하여 데이터를 추출하는 과정을 의미한다. 관계형 데이터베이스에서는 Join을 통해 서로 다른 테이블간 정보를 원하는 만큼 가져올 수 있는 장점이 있다. 어떻게든 연결만 된다면 = 공통 Key값이 존재한다면 이 둘을 합쳐 새로운 테이블을 만들 수 있다는 것은 가장 큰 강점임 여기서 가져갈 수 있는 특징 한 가지! 💡 Join 하려는 각 테이블의 위치관계는 동등하다. 이는 두 테이블의 크기에 차이가 있다 하더라도 상호간의 정보를 교환할 수 있는 특징을 가진다고도 할 수 있다. 💡 여기서 유일하지 않은 테이블 A와 각 키값이 유일한(unique) 테이블 B가 있을 때 이 둘의 Join 결과 집합은 A 집합의 레벨을 그..