테이블 0 4 424

by 김민형 [MySQL] [2020.05.28 05:23:20]


mysqlsql

by 마농 [2020.05.28 17:21:24]
-- 1)전체 고객의 30% 이상이 구매한 제품의 제품카테고리와 고객이름을 출력하시오
SELECT DISTINCT
       b.productid
     , b.productname
     , c.categoryid
     , c.categoryname
     , f.customerid
     , f.customername
  FROM (SELECT a.productid
          FROM orderdetails a
         INNER JOIN orders b
            ON a.orderid = b.orderid
         GROUP BY a.productid
        HAVING COUNT(DISTINCT b.customerid) >= (SELECT COUNT(*) * 0.3 FROM customers)
        ) a
 INNER JOIN products b
    ON a.productid = b.productid
 INNER JOIN categories c
    ON b.categoryid = c.categoryid
 INNER JOIN orderdetails d
    ON a.productid = d.productid
 INNER JOIN orders e
    ON d.orderid = e.orderid
 INNER JOIN customers f
    ON e.customerid = f.customerid
;

 


by 마농 [2020.05.28 17:29:47]
-- 2)2가지 이상의 카테고리에 제품을 구매한 고객의 이름을 출력하시오
SELECT a.customername
  FROM customers a 
 INNER JOIN orders b
    ON a.customerid = b.customerid
 INNER JOIN orderdetails c
    ON b.orderid = c.orderid
 INNER JOIN products d
    ON c.productid = d.productid
 GROUP BY a.customerid, a.customername
HAVING COUNT(DISTINCT d.categoryid) >= 2
;

 


by 김민형 [2020.05.28 21:47:58]

1번 문제는 결과값이 no result로 나오네용 ㅜㅠ


by 마농 [2020.05.29 07:45:25]

비율(30%)을 조정해 가면서 테스트 해보세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입