Giter Site home page Giter Site logo

Comments (2)

algo-risk avatar algo-risk commented on July 27, 2024 1

감사합니다!! 제가 "(더 근본적으로는 SQL도 'L'이 있다고 해도 (프로그래밍) 언어는 언어이긴 한가 하는)"라고 적은 부분이 바로 "SQL은 사실 언어라고 보기에는 매우 단순한 명령셋의 모음일 뿐이고, 쉽게 말해 집합과 비슷하다고 보면 될거 같습니다. 원하는 데이터를 추출하기 위해 교집합, 합집합 등을 활용해 후보군을 점점 줄여 나가는데 목적이 있는, 일종의 기능 모음이죠."라고 하신 말씀 들으니까 딱 그러하다고 여겨서, 구체적이고 사실적인 표현력과 내공에 또 한번 감탄하고 감사드립니다.

말씀하신 내용에 실무에서 자주 느끼던 바가 많이 겹치지만, 막상 이직을 앞두고는 '코딩' 테스트를 SQL로 한다니, 중요한 절차 중 하나니까 통과 압박에 부담이 크고 시험이라는 환경이 또 지원자에게 안기는 분위기란 묘하기도 해서 질문을 드렸는데, 정말 잘 질문드린 것 같습니다.

주신 말씀 하나하나가 정말 깊이 와 닿는 부분들이고 BigQuery에서도 연습해 봐야겠습니다. 면접 팁까지 (아마 WITH문 등의 적극 활용을 말씀하시는 느낌 같기도 한데 더 연구해 보겠습니다.) 아우르는 답변 주셔서 준비하는 데 정말 유용하게 도움이 많이 되리라 생각합니다.

다시 한번 감사드립니다! (GitHub에 이슈를 잘못 게시하면 지워지지를 않나 보네요, 중복으로 실수로 올려서 죄송합니다.)

from python-algorithm-interview.

likejazz avatar likejazz commented on July 27, 2024

안녕하세요?
SQL 질문이라니, 코딩 테스트와는 조금 다른 주제이긴 하지만 ^^; 일단 제가 아는 한 답변 드려보겠습니다.

SQL은 사실 언어라고 보기에는 매우 단순한 명령셋의 모음일 뿐이고, 쉽게 말해 집합과 비슷하다고 보면 될거 같습니다. 원하는 데이터를 추출하기 위해 교집합, 합집합 등을 활용해 후보군을 점점 줄여 나가는데 목적이 있는, 일종의 기능 모음이죠.

아마 시험이라면 대부분이 조금 복잡하게 그룹화 하는 문법들, GROUP BY, HAVING 등을 벗어나지 않을 것 같습니다. 또는 1:1, 1:n 관계를 이해하고 있는지 보기 위해 INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN등을 잘 활용하는지를 묻겠죠. 크게 이 범주를 넘어서지 않을 것 같고, 특성상 코딩 테스트 처럼 테스트 환경을 제공하기는 어려워 보입니다만, 당장 실습 환경 등이 필요하다면 BigQuery에서 연습하는게 가장 편할 것 같습니다. SQL 문법도 잘 정리되어 있기 때문에 문서를 한 번 읽어보는 것만 해도 많은 도움이 될 것 같구요. https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax GCP 처음 가입하면 주는 무료 코인으로 BigQuery 연습해 볼 정도는 충분할거 같네요.

개인적으로 하나의 SQL 구문으로 모든 작업을 한 번에 처리하는 방식을 선호하지는 않습니다. 마치 파이썬 한 줄로 비지니스 로직을 한 번에 다 처리 하라는 느낌이거든요. 2-3줄로 처리해도 아무 문제가 없죠. 오히려 가독성은 훨씬 더 좋을 수 있구요. 마찬가지로 SQL도 임시 테이블을 활용해 여러번에 걸쳐 쿼리를 나눠서 처리할 수 있습니다. 어차피 데이터 분석에 사용할 SQL이니 성능 문제 때문에 못한다고 얘기하기도 어렵고요. 마찬가지로 여러번에 걸쳐 쿼리하는게 가독성은 훨씬 더 좋을 수 있죠. 면접관에게도 단일 SQL로 처리하지 않고 임시 테이블을 이용해 SQL을 여러번 활용하겠다고 충분히 어필해볼 수 있는 문제라고 생각합니다. 과거에는 뷰도 많이 활용했으나 요즘은 뷰는 잘 쓰지 않는것 같구요. 무엇보다 SQL은 그리 어려운 문법이 아니니 집합을 효율적으로 처리한다고 항상 생각하면서 다양하게 조합해보면 어렵지 않게 원하는 구문을 만들어낼 수 있을거라 생각합니다.

from python-algorithm-interview.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.