퀴즈: SQL 쿼리

3881 단어 sqlquiz
안녕하세요, 코더 여러분! 💻

실제 작업에서 가져온 오늘의 퀴즈는 SQL 관련입니다.

데이터베이스 구조



두 개의 테이블이 있습니다(이 퀴즈를 위해 매우 단순화됨).
  • companies 두 개의 열 포함: idname
  • users 두 개의 열 포함: company_idis_pro (부울)



  • write a query to find all companies that only have pro users (is_pro=1).



    이것에 대한 나의 견해



    MySQL을 사용하는 내 솔루션을 보려면 클릭하십시오.


    SELECT
        c.name as company
    FROM
        users u
    JOIN companies c ON
        c.id = u.company_id
    GROUP BY
        c.id
    HAVING
        SUM(IF(is_pro, 0, 1)) = 0;
    
    IF(is_pro, 0, 1)는 내가 전문가인 사용자에게 0점을 준다는 것을 의미합니다(직관에 반하지만 참아주세요!). 모든 유저가 프로라면 점수의 합은 0이겠죠? 그것이 HAVING IF(is_pro, 0, 1)) = 0가 하는 일입니다.

    당신은 그것을 가지고 있습니다!

    어떻게 했을까요?

    📝 편집SUM에서 COUNT까지 사용하여 지적한 바와 같이 해키이므로 COUNTCASE를 사용하는 것이 좋습니다.

    SELECT
        c.name as company,
        COUNT(
            CASE WHEN can_use_app = 1 THEN 'x'
        END
        ) isPro,
        COUNT(
            CASE WHEN can_use_app = 0 OR can_use_app IS NULL THEN 'x'
        END
        ) isNotPro
    FROM
        users u
    JOIN companies c ON
        c.id = u.company_id
    GROUP BY
        c.id
    HAVING
        isPro > 0 and isNotPro = 0;
    





    즐거운 코딩하세요! ⌨️

    좋은 웹페이지 즐겨찾기