#color ="색상"으로 바 색상을 지정
plt.bar(X, Y,color='원하는 색상 컬러')
plt.bar(access_media.index,access_media.values, color = ['gold', 'b', '#FF0000', 'green','orange','red','#000000'], alpha = 0.3)
#alpha = 투명도를 조절
# #hex나 rgb로도 색상 표현도 가능

#edgecolor = '원하는 색상', linewidth = 원하는 두께로 각 바의 테두리의 색상과 두께 변경이 가능 합니다!
plt.bar(access_media.index,access_media.values, color = ['gold', 'b', '#FF0000', 'green','orange','red','#000000'], alpha = 0.3,edgecolor = '원하는 색상', linewidth = 원하는 두께)

#width=원하는 두께로 그래프의 바 너비를 변경 할 수 있어요! 기본 값은 0.8입니다!
plt.bar(access_media.index,access_media.values, width=원하는 두께)
#그래프를 bar라는 변수에 넣고,
bar = plt.bar(access_media.index,access_media.values)
#for 반복문으로,
for rect in bar:
#각 바의 세로길이 값을 구하고,
height = rect.get_height()
#bar의 가장 정 가운데 x 좌표 구하기 : get_x()로 x축의 가장 왼쪽 부분 + get_width의 절반 값
plt.text(rect.get_x() + rect.get_width()/2.0, height, '%.1f' % height, ha='center', va='bottom', size = 12)
#plt.barh를 이용하면, 서로 축 변경이 가능 하답니다 :)
plt.barh(access_media.index,access_media.values, color="g")
Q. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고,
대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을
추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요.
이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고
결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
car_id 별 최신 값은 max 함수로 뽑자!
(정답)
SELECT CAR_ID,
max(case when '2022-10-16' between start_date and end_date then '대여중' else '대여 가능' end) as AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by car_id
ORDER BY car_id desc
Q. USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요.
결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요.
이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
이 문제는 혼자 생각해보려고 했으나, 전혀 모르겠어서 다른사람이 푼 정답을 확인해봤는데,
봐도 모르겠는 문제가 또 생겼다 😂
억지로 이해해보려고 하면 얼추 이해는 되나 문제를 보고 혼자서 다시 풀진 못할 것 같다.
(정답)
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
GENDER,
COUNT(DISTINCT(B.USER_ID)) AS USERS
FROM USER_INFO A
JOIN ONLINE_SALE B
ON A.USER_ID = B.USER_ID
WHERE A.GENDER IS NOT NULL
GROUP BY MONTH, GENDER
ORDER BY 1,2,3
포인트는
1. gender 가 null인 걸 거를 것
2. user_id를 distinct로 카운트 할 것
Q. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서
대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여
대여기록을 출력하는 SQL문을 작성해주세요.
결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
대여기간을 구하는데 이상한 점 발견했다.
처음에는 그냥 end_date - start_date 로 했었는데, 결과값이 이상하길래
따로 컬럼을 만들어서 뺄셈을 하고난 값을 출력해봤는데
ex) 2022.10.20 - 2022.09.01 => 숫자 20221020-20220901 을 뺀 값인 119가 나오는 것이었다.
찾아보니 날짜 간격을 계산해주는 함수가 따로 있었다.
Datediff(datepart, startdate, enddate)
(정답)
SELECT history_id, car_id,
date_format(start_date, '%Y-%m-%d') "Start_date",
date_format(end_date, '%Y-%m-%d') "End_date",
case when DATEDIFF(end_date,start_date)+1 >=30 then '장기 대여'
else '단기 대여' end as RENT_TYPE
from car_rental_company_rental_history
where date_format(start_date, '%Y-%m') = '2022-09'
order by history_id desc