zoukankan      html  css  js  c++  java
  • 数据库查询的执行顺序

    通过题目的形式来分析,题目如下

    该题目的数据
    productID   productName                                        cost        price
    ----------- -----------------                                 ----------- -----------
    1           笔记本电脑                                              3000        4000
    2           台式电脑                                               2000        3500
    3           数码相机                                               1500        2500

    (
    3 行受影响)

    businessmanID businessmanName                                    SellProductID SellProductCount
    ------------- -------------------------------------------------- ------------- ----------------
    1             太平洋电脑城                                             1             5
    1             太平洋电脑城                                             2             4
    2             颐高数码                                               2             2
    2             颐高数码                                               3             5


    求每个销售商和他的总利润
    答案如下格式
    businessmanName    利润(利润
    =(价格price - 成本cost) * 销售数量sellProductCount)
    太平洋电脑城            XXXX
    颐高数码                XXXX

    businessmanname                                    利润
    -------------------------------------------------- -----------
    太平洋电脑城                                             11000
    颐高数码                                               
    8000


    首先我们需要连接两个表

    得到

    1


    选择我们需要的两列

    2

     答案已经显而易见了 只需要再聚合分组一下便OK

    SELECT businessmanname,SUM((price-cost)*sellproductcount)利润 FROM temp_businessman a inner join temp_products b ON a.sellproductid=b.productid
    GROUP BY businessmanname

    businessmanname 利润
    --------------- -----------
    太平洋电脑城          11000
    颐高数码            
    8000

    我是这么理解的

    1. DBMS首先执行from子句,根据from子句中的一个或者多个表创建中间表。如上,有两个表,那么执行第一步。得到一个包含两张表数据的工作表。

    2. 执行select子句,去掉工作表中不需要的列

    3.  如果有where子句,那么用where子句来筛选过滤第一步得到的工作表,去掉不合规矩的行

    4. 执行group by 子句,分组并聚合不在分组列的其他列

    5. 执行having 子句,(having子句的列必须包含在分组或者聚合列中)

    6. order by 子句


      欢迎讨论

  • 相关阅读:
    SpringMVC框架(4)--异常处理
    SpringMVC框架(3)--文件上传与SpringMVC拦截器
    SpringMVC框架(1)--基础入门
    Spring框架(6)--JDBCTemplate的使用和Spring的事务控制
    Spring框架(5)--AOP相关内容
    Spring框架(4)--Spring注解开发
    Spring框架(3)--Spring配置数据源
    Spring框架(2)--依赖注入
    考试倒计时
    递归列表
  • 原文地址:https://www.cnblogs.com/jianjialin/p/1402707.html
Copyright © 2011-2022 走看看