这段SQL报错的原因可能是由于缺少表别名 "k" 和 "p"。在子查询中,需要对表 "pmis.busi_project_person" 和 "pmis.busi_attendance" 进行联接操作,但是在查询语句中没有为这两个表指定别名。正确的查询语句应该为:

SELECT , RANK() OVER (ORDER BY t.rate DESC) AS rank FROM ( SELECT k.identity_role AS role, k.quilified / k.total AS rate FROM ( SELECT x.identity_role, x.quilified, h.total FROM ( SELECT s.identity_role, COUNT() AS quilified FROM ( SELECT n.id, p.identity_role FROM pmis.busi_project_person p LEFT JOIN ( SELECT p.id, COUNT() AS total FROM pmis.busi_project_person p LEFT JOIN pmis.busi_attendance a ON p.id = a.person_id WHERE p.del_flag = 0 AND a.card_date BETWEEN DATE_SUB(DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH), INTERVAL DAY(LAST_DAY(NOW())) - 1 DAY) AND DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH) GROUP BY p.id ) n ON p.id = n.id WHERE n.total > p.date ) s ON s.identity_role != 1 GROUP BY s.identity_role ) x LEFT JOIN ( SELECT p.identity_role, COUNT() AS total FROM pmis.busi_project_person p WHERE p.del_flag = 0 GROUP BY p.identity_role ) h ON h.identity_role = x.identity_role ) k -- 添加表别名 k LEFT JOIN pmis.busi_project_person p ON p.identity_role = k.identity_role -- 添加表别名 p ) AS t;

这段sql报错的原因是 SELECT RANK OVER ORDER BY trate DESC AS rank from select kidentity_role As role kquilified ktotal

原文地址: http://www.cveoy.top/t/topic/bpJp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录