쿼리를 어떻게 해야 할까요?
본문
mysql db에는 위 처럼 테이블에 데이터가 입력이 되어 있습니다.
제가 하고 싶은 것은 expt_date별로 강사별 강의수를 세고 싶습니다.
즉
날짜 발롱블루강사 갯수 김프로강사 갯수
2022-05-02, 60, 25
2022-05-15, 5, 0
2022-05-17, 1, 0
2022-05-29, 1, 0
2022-05-30, 1, 0
이렇게 나오게 하고 싶습니다.
쿼리를 어떻게 하면 될까요?
답변 4
이렇게 쿼리 한번 해보실랍니까유~~~
SELECT expt_date
, sum(case when (teacher_text = '발롱블루' OR pac_teacher = '발롱블루') then 1
else 0 end) as "발롱블루"
, sum(case when (teacher_text = '김프로' OR pac_teacher = '김프로') then 1
else 0 end) as "김프로"
FROM s_mystudy_exptdate
WHERE expt_date LIKE '2022-05%'
GROUP BY expt_date
ORDER BY expt_date asc
강사가 두명이면 쿼리로 어떻게 되겠지만
그 이상이면
select 날짜, 강사, count(강사) from table group by 날짜, 강사
이렇게 하는게 정석이죠
SELECT expt_date,
sum( if( teacher_text = '발롱블루' OR pac_teacher = '발롱블루', 1, 0) teacher1,
sum( if( teacher_text = '발롱블루2' OR pac_teacher = '발롱블루2', 1, 0) teacher2,
...
FROM s_mystudy_exptdate
WHERE expt_date LIKE '2022-05%'
GROUP BY expt_date
다시 질문합니다.
SELECT SQL_CALC_FOUND_ROWS expt_date, lecture_no, SUM(IF(lecture_no != '',1,0)) as lec_cnt, teacher_text, pac_teacher, package_no, SUM(IF(package_no != '', 1, 0)) as pack_cnt FROM s_mystudy_exptdate WHERE expt_date LIKE '2022-05%' GROUP BY lecture_no, package_no ORDER BY expt_date
하면
이렇게 나옵니다.
이것을 2022-05 월별로 나오도록 하고 싶습니다.
날짜 lecture_no1 lec_cnt1 lecture_no2 lec_cnt2 lecture_no3 lec_cnt3 package_no1 pack_cnt1 package_no2 pack_cnt2 package_no3 pack_cnt3
2022-05 81,50, 173,3, 69,1, 144,1, 187,1, 172,11 (여기까지는 lecture_no, lec_cnt가 반복된것이고)
13,1, 12,3, 17,1 16,1, 14,3 18,4, 20,14, 22,1 (여기는 package_no, pack_cnt가 반복된 것입니다.)
이런식으로 항목을 lecture_no, lec_cnt, package_no, pack_cnt갯수만큼 반복해서 나오게 할수 있을까요?
그리고 lecture_no와 lec_cnt, package_no, pack_cnt 에는 각각의 lecture_no, lec_cnt, package_no, pack_cnt 값이 들어가는게 SQL문으로 가능하까요?
아니면 배열로 만들어서 처리를 해야 할까요?