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 子句


      欢迎讨论

  • 相关阅读:
    mysql修改加密方式
    信息安全学习路线
    DNS域传送漏洞
    CSRF漏洞
    反序列化漏洞
    计算机通讯基础
    gorm gen使用
    golang makefile使用
    linux命令行录制
    go代码自动生成注释
  • 原文地址:https://www.cnblogs.com/jianjialin/p/1402707.html
Copyright © 2011-2022 走看看