zoukankan      html  css  js  c++  java
  • Django 多表查询练习题 Q查询 F查询 聚合 分组

    -------------------------------------------------自己偷的懒,或许用加倍时间也补不回来,珍惜现在的拥有的时光,把我现在!



    上节回顾



    基于对象的跨表查询(子查询语句) *******

    正向查询按字段,反向查询按表名小写

    一对多查询
    book.publish
    Book对象 ------------------------- Publish对象
    publish.book_set.all()

    多对多查询
    book.authors.all()
    Book对象 ------------------------- Author对象
    author.book_set.all()


    一对一查询
    author.ad
    Author对象 ------------------------- AuthorDetail对象
    ad.author


    基于双下划綫的跨表查询(join语句) *******

    正向查询按字段,反向查询按表名小写
    #查询linux书籍的所有作者
    models.Book.objects.filter(title="linux").values("authors__name")

    #手机号以151开头的作者出版过的所有书籍名称以及出版社名称

    Book.objects.filter(authors__ad__tel__startswith="151").values("title","publish__name")



    聚合与分组查询


    聚合:

    # 1 计算所有图书的平均价格
    Book.objects.all().aggregate(avg_price=Avg("price"))
    {'avg_price': 137.166667}
    (0.000) SELECT AVG(`app01_book`.`price`) AS `avg_price` FROM `app01_book`; args=()

    # 2 计算所有图书的最高价格,最低价格
    Book.objects.all().aggregate(max_price=Max("price"),min_price=Min("price"))
    (0.000) SELECT MAX(`app01_book`.`price`) AS `max_price`, MIN(`app01_book`.`price`) AS `min_price` FROM `app01_book`; args=()
    {'max_price': Decimal('222.00'), 'min_price': Decimal('111.00')}

    分组:



    emp:

    id name age salary dep
    1 alex 12 2000 销售部
    2 egon 22 3000 人事部
    3 wen 22 5000 人事部

    #查询每一个部门名称以及对应的员工数

    sql:
    select dep,Count(*) from emp group by dep;
    select dep,AVG(salary) from emp group by dep;






    1、 自行创建测试数据;
    2、 查询学生总人数;
    3、 查询“生物”课程和“物理”课程成绩都及格的学生id和姓名;
    4、 查询每个年级的班级数,取出班级数最多的前三个年级;
    5、 查询平均成绩最高的学生的id和姓名以及平均成绩;
    6、 查询每个年级的学生人数;
    7、 查询每位学生的学号,姓名,平均成绩;
    8、 查询学生编号为“2”的学生的姓名、该学生成绩最高的课程名及分数;
    9、 查询姓“李”的老师的个数和所带班级数;
    10、查询班级数小于5的年级id和年级名;
    11、查询教过课程超过2门的老师的id和姓名;
    12、查询学过编号“1”课程和编号“2”课程的同学的学号、姓名;
    13、查询所带班级数最多的老师id和姓名;
    14、查询有课程成绩小于60分的同学的学号、姓名;
    15、查询男生、女生的人数,按倒序排列;
    16、查询各个课程及相应的选修人数;
    17、查询同时选修了物理课和生物课的学生id和姓名;
    18、检索“3”课程分数小于60,按分数降序排列的同学学号;
    19、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
    20、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;


    接下来学习任务:

    Djagno:
    1 Ajax
    2 cooke session 用户认证组件
    3 forms组件
    4 中间件,分页


    '''










  • 相关阅读:
    堆排序算法
    二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
    hdoj1010 奇偶剪枝+DFS
    常见排序算法c++总结
    B
    C
    D
    E
    G
    F
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/10236103.html
Copyright © 2011-2022 走看看