[Comento] 1주차 과제 SQL 기본 문법 익히기
SQL은 데이터베이스를 다루고, 데이터베이스로 부터 원하는 데이터를 적절하게 추출하기 위한 기초적인 언어이다.
https://www.w3schools.com/sql/
SQL Tutorial
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
위 해당 사이트를 통해 기초적인 SQL 문법들을 학습할 수 있다. 더불어 프로그래머스 사이트에서 지원하는 SQL 고득점 키트를 통해 실제 SQL 문제를 접하고 해결하는 방법을 학습할 수 있다.
https://programmers.co.kr/learn/challenges?tab=sql_practice_kit
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
#1주차 코멘토 금융 IT 개발 실무 경험하기 과제
[주제]
관계형데이터베이스에서기본적인쿼리학습 (여러테이블에서정보를가져오거나,데이터적재,데이터삭제)
[요구사항]
1.관계형데이터베이스(오라클,mariaDB,Mysql등)
2.파이썬,자바로호환이가능
[해당 과제를 통한 기대 사항]
1. SQL 기본 문법 익히기
2. 다양한 SQL 활용 예시 익히기
[최종 결과 출력 내용]
1.삼성전자의 테마 이름?
2.코스피 상위 5 종목 시총합(주식금융정보기준일자-20210107)
3.투자 위험이 가장 많은 종목 테마명은?
4.코스닥 종목 중 가장 높은 ROE를 가진 정보 가져오기 (code,market_class0,종목명,ROE)
[과정 및 결과]
#1번. 삼성전자의 테마 이름 출력 결과
select distinct(thema_name) from stock_info WHERE CODE IN(SELECT CODE FROM stock_kospi
WHERE code_name='삼성전자');
#2번. 코스피 상위 5 종목 시총합 출력 결과
select SUM(n.price) FROM (SELECT a.code, a.code_name, AVG(b.market_cap) AS price FROM
stock_kosdaq a JOIN stock_finance b ON a.code = b.code GROUP BY a.code ORDER BY price desc
LIMIT 5) n;
#3번. 투자 위험이 가장 많은 종목 테마명 출력결과
SELECT DISTINCT(n.thema_name), t.co FROM stock_info n, (SELECT code_name, CODE,COUNT(CODE)
AS co FROM stock_invest_danger GROUP BY CODE ORDER BY co DESC) t WHERE n.code = t.code AND
n.thema_name IS NOT NULL ORDER BY t.co DESC LIMIT 1;
#4번. 코스닥 종목 중 가장 높은 ROE를 가진 정보 가져오기 출력 결과
SELECT t.code,t.market_class0,t.category1,k.names,k.MAX FROM stock_info t JOIN
(SELECT a.CODE AS cods,a.code_name AS NAMES, b.ROE AS MAX FROM stock_kosdaq a JOIN stock_finance
b ON a.code = b.code ORDER BY MAX DESC LIMIT 1)k ON t.code = k.cods LIMIT 1
[문제 및 해결방안]
해당 과제는 MariaDB를 통해 진행되었다. 지금까지 DB를 제대로 활용해본 적이 없었기 때문에 유독 이번 과제가 어려웠다. 특히 과제 수행을 위해 주어진 금융 관련 대용량 데이터들을 MariaDB 데이터베이스 밑 테이블에 저장하는 과정에서 애를 먹었는데, 이상하게 2개 이상의 데이터들을 저장하려고 하면 에러가 발생했다. 해당 에러문을 구글링을 통해 해석한 결과 테이블을 utf8로 지정하지 않아서 발생했다는 결과를 도출하였고 MySql-Client라는 프로그램을 통해 특정 코드를 입력하여 해결할 수 있었다.
alter table "테이블명" convert to character set utf8;
테이블 컬럼 조합을 utf8로 변경하는 코드로 관련 에러가 발생했을 때 입력하면 좋을 것 같다.