mysql 行转列之后求占比问题。

SELECT a.loginid as logid, 
sum(IF(a.courseid = 30, a.watchtime, 0)) AS '公共基础',
sum(IF(a.courseid = 31, a.watchtime, 0)) AS '道路工程',
sum(IF(a.courseid = 32, a.watchtime, 0)) AS '交通工程',
sum(IF(a.courseid = 33, a.watchtime, 0)) AS '桥隧工程',
sum(IF(a.courseid = 34, a.watchtime, 0)) AS '水运材料' 
FROM  line_on a  GROUP BY  loginid

img


表1 :根据上面的SQL得出的结果。

现在有一个表2 :

img

表2的course与表1的courseid对应,需要表1的watchtime结果除以表2的classhour,求占比。

怎么实现呢?

1、你是求表1的横向占比,还是纵向占比呢?如果是纵向占比(各logid在同一个courseid中的占比),那除不除表2的classhour占比结果都是一样的,只有求横向占比(各courseid在同一个logid中的占比)除以表2的classhour才会起作用
2、如果是横向占比,如果表2只有这几条数据,那在进行表1的行转列时就可以顺便关联表2的course然后把classhour除了,这样求占比就方便了