목록분류 전체보기 (129)
YS's develop story
Select절에서 사용할 수 있는 서브 쿼리 Scalar Subquery Scalar Subquery 특징 한 개의 single value를 반환하는 Select절의 서브 쿼리입니다. 만약 Scalar Subquery를 이용하여 한 개 보다 많은 column을 출력하고자 한다면 Runtime error가 발생하게 됩니다. Scalar Subquery는 테이블에서 column 값을 조회할 때 불필요한 Join을 하지 않기 위해 사용됩니다. Scalar Subquery는 해당하는 값이 존재하지 않을 경우 null을 반환합니다. Scalar Subquery 예시 아래와 같이 두 개의 테이블이 있습니다. Community 테이블 CommunityReply 테이블 SELECT contentName, (SELECT..
SQL Having, Where 차이 위와 같이 instructor라는 테이블이 있습니다. SELECT dept_name, AVG(salary) AS avg_salary FROM instructor GROUP BY dept_name HAVING AVG(salary) > 42000; 집계 함수와 GROUP BY 키워드를 활용해 위와 같은 쿼리문으로 dept_name별로 평균 연봉을 출력하도록 할 수 있습니다. 하지만 여기서 궁금한 게 생겼습니다. HAVING이 아닌 WHERE키워드로 위와 똑같이 출력하도록 할 수 있지 않을까요? 결론부터 말하자면 그렇게 할 수 없습니다! 데이터베이스 원서에도 위와 같이 나와 있습니다. HAVING은 그룹을 형성 한 후에 적용이 되지만 WHERE는 그룹을 만들기 전에 적용이..
SQL Aggregate Functions 집계 함수 SQL은 집계 함수, Aggregate function을 통해 column의 값들을 계산할 수 있습니다. 위 사진의 쿼리는 dept_name이 Comp. Sci인 강사들의 평균 급여를 출력해라 라는 명령어입니다. 위와 같이 집계 함수를 사용할 수 있습니다. avg 대신에... min을 사용하게 되면 강사의 급여 중 최솟값을 max를 사용하게 되면 강사의 급여 중 최댓값을 sum을 사용하게 되면 강사 급여의 모든 합계를 가져오게 됩니다. 위와 같이 count를 활용하여서 course테이블의 튜플 수 가 몇 개인지 확인하는 쿼리를 작성할 수 있습니다. 집계 함수와 Group By 키워드 활용해보기 위 사진에서 사용된 쿼리와 같이 group by 키워드를 ..
Cartesian Product SELECT * FROM instructor, teaches from절에 위와 같이 테이블을 두 개 쓰게 된다면 가능한 모든 조합으로 테이블을 이어 붙여서 출력하게 됩니다. 왼쪽은 classroom 테이블, 오른쪽은 department 테이블입니다. classroom과 department테이블을 Cartesian product를 진행했습니다. SELECT * FROM classroom,department Cartesian Product는 이 기능 하나만으로 유용하지 않습니다. 가능한 모든 조합으로 테이블을 이어 붙이기 때문에 쓸데없는 튜플들이 많이 생성됩니다. 하지만 Where키워드와 함께 사용한다면 매우 유용합니다. 아래와 같이 사용하게 된다면 유용하게 사용될 수 있습니..
Super key, Candidate key, Primary key, Foreign key 비교 위와 같은 테이블이 있습니다 테이블에 있는 각각의 튜플들을 구분할 수 있는 K를 Super key라고 합니다. {ID} {ID, name} 위 값들을 통해 테이블에서 저 값에 해당하는 특정한 튜플이 무엇인지 알 수 있기 때문에 Super key라고 할 수 있겠죠 {name} 같은 경우는 Super key가 아닙니다. 동명이인이 있을 수 있기 때문입니다. Super key가 가져야 되는 최소한의 값만 가진 것을 Candidate key라고 합니다. Candidate key는 여러 개 있을 수 있습니다. {ID} - Candidate key라고 할 수 있습니다. {ID, name} - 각 튜플들을 식별하는데 불필..
🍺 MAKE US 6기에서 팀원들과 만든 독립서점 플랫폼, 바인딩입니다. 🍉MAKE US 6기 후기 (앱 런칭 연합 동아리) 🍉MAKE US 6기 , 메이커스 6기 후기 (앱 런칭 연합 동아리) 안녕하세요 ~ MAKE US 6기 활동이 4월 3일 데모데이로 끝나게 되었는데요... 실제 앱런칭을 위해 그동안 열심히 달렸었던 소감과 후기를 작 yusang.tistory.com 📱 Binding, 바인딩 앱 소개 Binding — 전국 독립서점, 독자, 작가를 이어주는 앱 독립서점이라는 그 포근한 공간에 대하여 binding.medium.com 독립서점은 온갖 종류의 책을 판매하는 대형서점과 다릅니다. 책방 주인의 취향이 그대로 반영된, 책에 대한 애정과 공간에 대한 철학이 깃든 곳이기 때문이죠. 요즘에는 핸..
🍉MakeUs 메이커스 6기 후기 (앱 런칭 연합 동아리) 안녕하세요 ~ MAKE US 6기 활동이 4월 3일 데모데이로 끝나게 되었는데요... 실제 앱런칭을 위해 그동안 열심히 달렸었던 소감과 후기를 작성하고자 글을 쓰게 되었습니다. 일단 MAKE US 동아리가 뭔지 간단하게 설명을 해드리고자 합니다!! 메이커스 - 수익형 앱 런칭 동아리 프리미엄 앱 런칭 동아리 MAKE US로 당신을 초대합니다 www.makeus.in 위 영상의 10:08초에 메이커스 동아리에 대한 소개가 나오네요 컴공 선배 유튜브를 운영하고 있으시고 소프트스퀘어드의 CEO, CTO이신 스카이님과 제리님이 만드신 대학생 연합동아리가 MAKE US입니다. 앱 관련 수상경력도 수십 회이고 다양한 대회에서도 좋은 성적을 거두고 있다고 하..
알고리즘 ) 동적 계획법과 플로이드 알고리즘 동적 계획법, Dynamic Programming 동적 계획법의 원리는 매우 간단합니다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 문제를 푸는 것입니다. Step 1 : 문제의 답을 구하기 위한 recursive property를 세운다. Step 2 : bottom-up 방식으로 작은 문제들을 먼저 풀면서 최종 문제를 풀겠다. 동적 계획 알고리즘은 최단경로 문제, 행렬의 제곱 문제 등의 최적화에 사용됩니다. 동적 계획법은 문제를 해결하기 위한 모든 방법을 검토하고, 그중에 최적의 풀이법을 찾아내기 때문이죠. 플로이드의 최단 경로 알고리즘 플로이드 알고리즘은 각각의 정..
알고리즘 ) 분할 정복법 알고리즘의 해결전략 Divide and Conquer를 분할 정복법이라고 합니다. 분할 정복법은 주어진 문제를 작은 사례로 나누어(Divide) 각각의 작은 문제들을 해결(Conquer)하는 방법입니다. 프랑스의 황제 나폴레옹이 전투에서 사용했던 훌륭한 전략에서 이름을 따왔다고 하네요. 나누어라, 그리고 정복하라.. 멋있는 말입니다... Merge Sort Best Case 시간복잡도 : O(n log n) Worst Case 시간복잡도 : O(n log n) 분할 단계 array를 두 개의 subarrays로 나눕니다. 정복 단계 각각의 subarray가 충분히 작다면 바로 정렬 합니다. 그렇지 않다면 재귀를 통해 각각을 정렬합니다. 결합 단계 정렬된두 개의 subarray를 ..
Complexity function 및 빅 오 , 빅 오메가, 빅 세타 표기법 알고리즘 분석에 필요한 두 개의 Parameter the input size the basic operation Input Size 1. array의 size가 Input size가 될 수 있습니다. 2. single number자체가 input size가 될 수 있습니다. 3. 그래프가 입력으로 들어온다면, vertex의 개수, edge의 개수가 input size가 될 수 있습니다. Basic Operation 알고리즘 전체의 수행 시간에 미미하게 영향을 끼치는 것을 제외하고 전체의 수행 시간을 지배하게 되는 그룹을 Basic Operation이라고 합니다. Example) Binary Search에서는 찾고자 하는 값과 ..