Files
1/dao/__pycache__/wl_statistics_dao.cpython-310.pyc
T

66 lines
7.1 KiB
Plaintext
Raw Normal View History

2026-09-21 20:16:09 +08:00
o
\§jš#ã
@sÒddlmZddlmZddlmZmZmZddlm Z ddl
m Z ddl m
Z
ddlmZddlmZdd lmZmZd
Zd Zejd d
„ejdd
„ejdd
„ejdd
„ejdd
„ejdd
„iZGdd„dƒZdS)é)Újoin)ÚOptional)Úand_ÚcaseÚfunc)ÚSession)ÚClass_)ÚEmp)ÚScore)ÚStudent)Ú AgeCompareOpÚ SortOrderuç”·u女cCs
tj|kS©N©r Ústu_age©Úv1Úv2©rú5D:\wl_student_manager_system\dao\wl_statistics_dao.pyÚ<lambda>ó
rcCs
tj|kSrrrrrrrrcCs
tj|kSrrrrrrrrcCs
tj|kSrrrrrrrrcCs
tj|kSrrrrrrrrcCstj ||¡Sr)r rÚbetweenrrrrrsc @sÐeZdZe ddedededeefdd„ƒZedefdd „ƒZ eded
e
fd d „ƒZ eded
efdd„ƒZ eddede
dBfdd„ƒZededefdd„ƒZedefdd„ƒZeddede
dBfdd„ƒZdS)Ú StatisticDaoNÚdbÚopÚvalueÚvalue2cCs\|tjkr|dur
tdƒ‚||krtdƒ‚t|||ƒ}| t¡ tjdk|¡ tj ¡ 
¡S)Nu8区间查询(between)需è¦�å�Œæ—¶æ��供上界 value2u'区间查询的下界ä¸�能大于上界r) r rÚ
ValueErrorÚ_AGE_OP_FACTORYÚqueryr ÚfilterÚ
is_deletedÚorder_byrÚall)rrrrÚ conditionrrrÚsearch_students_by_age"s
ýz#StatisticDao.search_students_by_agec Csng}| t¡ tjdk¡ ¡D]%}dd„|jDƒ}| |jt|ƒt dd„|Dƒƒt dd„|Dƒƒdœ¡q|S)uNæ¯�个ç�­çº§çš„æ€»äººæ•° + 按性别细分的分布(å�« 0 人的空ç�­çº§ï¼‰rcSsg|] }|jdkr|‘qS)r)r"©Ú.0ÚsrrrÚ
<listcomp>5óz8StatisticDao.statistic_classes_count.<locals>.<listcomp>csó�|]
}|jtkrdVqdS©éN)Ú
stu_genderÚ
MALE_VALUEr'rrrÚ <genexpr>9ó€z7StatisticDao.statistic_classes_count.<locals>.<genexpr>csr,r-)r/Ú FEMALE_VALUEr'rrrr1:r2)Úclass_idÚtotalZ
male_countZ female_count)
r rr!r"r$ÚstudentsÚappendr4ÚlenÚsum)rÚresultÚcr6rrrÚstatistic_classes_count0s
üz$StatisticDao.statistic_classes_countÚ
score_linecsbg}| t¡ tjdk¡ ¡D]}t‡fdd„|jDƒƒr.| |j|jdd„|jDƒdœ¡q|S)Nrc3s�|]}|jˆkVqdSr©Úscore©r(Úsc©r=rrr1Us€z3StatisticDao.query_score_by_line.<locals>.<genexpr>cSóg|] }|j|jdœ‘qS©©Ú
exam_orderr?rE©r(Úirrrr*Yr+z4StatisticDao.query_score_by_line.<locals>.<listcomp>)Ústu_noÚstu_nameÚscores) r r r!r"r$rKr7rIrJ)rr=r:r)rrBrÚquery_score_by_lineQsý€z StatisticDao.query_score_by_lineÚ
fail_countcCsfg}| t¡ tjdk¡ ¡}|D]}tdd„|jDƒƒ|kr0| |j|j dd„|jDƒdœ¡q|S)NrcSsg|] }|jdkr|‘qS)é<r>r@rrrr*br+z4StatisticDao.query_by_fail_count.<locals>.<listcomp>cSrCrDrErGrrrr*fr+)rJr4rK)
r r r!r"r$r8rKr7rJr4)rrMr:r6ÚsturrrÚquery_by_fail_count]sý€z StatisticDao.query_by_fail_countÚ
sort_ordercCs¸t tj¡ d¡}| tj d¡tj d¡|¡  t¡ 
tj ¡  tj
dktj d¡¡ tjtj¡}|tjkr@| | ¡¡}| ¡S|tjkrP| | ¡¡}| ¡S| tjtj¡}| ¡S)uIæ¯�次考试æ¯�个ç�­çº§çš„å¹³å�‡åˆ†ï¼Œæ”¯æŒ�按平å�‡åˆ†åЍæ€�å�‡/é™�åº�Ú avg_scorer4rFrN)rÚavgr
r?Úlabelr r r4rFÚ select_fromrÚstudentr!r"ÚisnotÚgroup_byr
Údescr#Úascr$)rrQrRÚqrrrÚget_class_avg_scorejs&

ý ù

ûþz StatisticDao.get_class_avg_scoreÚrankcCsX| tjtjtjtjtj¡ t¡  tj
¡  tj dktj dk¡ 
tj ¡¡ |¡}| ¡S)Nr)r r rJr4r Ú
offer_timeZ company_nameZsalaryrUrÚempr!r"r#rYÚlimitr$)rr]r[rrrÚget_info_by_rank‚sû ö zStatisticDao.get_info_by_rankcCsbt t tjtj¡d¡ d¡}| tj |¡ 
t¡  tt tj
tj
ktjdkƒ¡ tjdk¡}| ¡S)uUæ¯�个学生的就业时长(天)= offer下å�‘æ—¶é—´ - 就业开放时间
rÚemp_total_time)rÚcoalesceÚdatediffr r^Ú
emp_open_timerTr r rJrUÚ outerjoinrrIr"r!r$)rrbr[rrrÚ get_emp_time‘sýüþ ûzStatisticDao.get_emp_timec
Csòt tjtj¡}t |¡ d¡}t |¡ d¡}| t j
 d¡||¡  t ¡  t
tt
j
t j
kt
jdkƒ¡  tttjt