删除 statistics.py
This commit is contained in:
-105
@@ -1,105 +0,0 @@
|
||||
from fastapi import APIRouter,Depends,HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy_fastapi_demo.scheme.statistics import StudentAge, ClassCount, ScoreCount, ScoreAvg, Employment, EmploymentOff
|
||||
from sqlalchemy_fastapi_demo.database import get_db
|
||||
router = APIRouter()
|
||||
from sqlalchemy_fastapi_demo.model.students import Student
|
||||
from sqlalchemy_fastapi_demo.model.Score import Score
|
||||
from sqlalchemy_fastapi_demo.model.employment import EmploymentBase,EmploymentOffer
|
||||
from sqlalchemy_fastapi_demo.model.c_lass import Classinfo
|
||||
from fastapi import FastAPI, Depends, HTTPException, Query
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from sqlalchemy_fastapi_demo.database import get_db
|
||||
from sqlalchemy_fastapi_demo.dao.statistics import (students_age, class_statistics,score_above, score_fail,
|
||||
avg_scores,top_salary,stu_every,class_avg)
|
||||
# app = FastAPI(title="统计接口")
|
||||
|
||||
# -动态年龄范围查询**:支持用户输入年龄阈值及比较条件(如大于、小于、等于、区间等),动态查询符合条件的学员信息。
|
||||
@router.get("/students/age")
|
||||
def api_students_age(op: str = Query(..., description=">, <, =, >=, <=, between"),
|
||||
age_value: int = Query(None),age_min: int = Query(None),
|
||||
age_max: int = Query(None),db: Session = Depends(get_db)):
|
||||
try:
|
||||
rows = students_age(db, op, age_value, age_min, age_max)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
return [{"stu_id": s.stu_id,
|
||||
"stu_name": s.stu_name,
|
||||
"age": s.age,
|
||||
"gender": s.gender,
|
||||
"class_id": s.class_id,} for s in rows]
|
||||
|
||||
# 多维度班级统计**:统计每个班级的总人数,以及按性别(男、女)细分的人数分布。
|
||||
@router.get("/classes/statistics")
|
||||
def api_class_statistics(db: Session = Depends(get_db)):
|
||||
return class_statistics(db)
|
||||
|
||||
|
||||
# - 查询每次考试成绩都在输入分数线(如80分)以上的学生的编号、姓名和成绩。
|
||||
@router.get("/scores/above")
|
||||
def api_score_above(
|
||||
score_input: int = Query(..., ge=0, le=100),
|
||||
db: Session = Depends(get_db)):
|
||||
rows = score_above(db, score_input)
|
||||
return [{"stu_id": i[0], "stu_name": i[1], "exam_order": i[2], "score": i[3]} for i in rows]
|
||||
|
||||
# - 查询有输入指定次数(如两次)以上不及格的学生的姓名、班级和不及格成绩明细。
|
||||
@router.get("/scores/fail")
|
||||
def api_score_fail(
|
||||
fail_times: int = Query(..., ge=1),
|
||||
fail_score: int = Query(60, ge=0, le=100),
|
||||
db: Session = Depends(get_db)):
|
||||
rows = score_fail(db, fail_times, fail_score)
|
||||
return [{"stu_name": i[0], "class_id": i[1], "exam_order": i[2], "score": i[3]} for i in rows]
|
||||
|
||||
# 统计每次考试每个班级的平均分,并支持按分数从高到低或从低到高动态排序
|
||||
@router.get("/scores/avg")
|
||||
def api_avg_scores(order: str = Query("desc", pattern="^(asc|desc)$"),
|
||||
db: Session = Depends(get_db)):
|
||||
a = avg_scores(db, order)
|
||||
return [{"exam_id": i.exam_id,
|
||||
"class_id": i.class_id,
|
||||
"avg_score": round(float(i.avg_score), 2)} for i in a]
|
||||
|
||||
#就业统计
|
||||
# - 统计就业薪资排名 Top N(动态输入 N)的学生的姓名、班级、就业时间和就业公司。
|
||||
@router.get("/employment/top")
|
||||
def api_top_salary(n: int = Query(5, ge=1), db: Session = Depends(get_db)):
|
||||
return top_salary(db, n)
|
||||
|
||||
# - 统计每个学生的就业时长(计算公式:offer下发时间 - 就业开放时间)。
|
||||
@router.get("/employment/every")
|
||||
def api_stu_every(db: Session = Depends(get_db)):
|
||||
return stu_every(db)
|
||||
|
||||
# 每个班级的平均就业时长
|
||||
@router.get("/employment/class_avg")
|
||||
def api_class_duration(db: Session = Depends(get_db)):
|
||||
return class_avg(db)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user