쿼리를 어떻게 해야 할까요? 채택완료

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개
이렇게 쿼리 한번 해보실랍니까유~~~
</p>
<p>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</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
다시 질문합니다.
http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/select.html" target="mysql_doc">SELECT SQL_CALC_FOUND_ROWS expt_date, lecture_no, http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_sum" target="mysql_doc">SUM(http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if" target="mysql_doc">IF(lecture_no != '',1,0)) as lec_cnt, teacher_text, pac_teacher, package_no, http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_sum" target="mysql_doc">SUM(http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if" target="mysql_doc">IF(package_no != '', 1, 0)) as pack_cnt FROM s_mystudy_exptdate WHERE expt_date http://localhost/phpMyAdmin4/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like" target="mysql_doc">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문으로 가능하까요?
아니면 배열로 만들어서 처리를 해야 할까요?
답변에 대한 댓글 1개
group_concat( concat( package_no,':', pack_cnt) SEPARATOR ', ') package
FROM s_mystudy_exptdate
WHERE expt_date LIKE '2022-05%'
SQL_CALC_FOUND_ROWS 사용을 다음을 참고하세요.
https://blog.asamaru.net/2015/09/11/using-sql-calc-found-rows-and-found-rows-with-mysql/
댓글을 작성하려면 로그인이 필요합니다.
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
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인