zoukankan      html  css  js  c++  java
  • spark统计

    http://www.myexception.cn/sql/2004512.html

    http://blog.csdn.net/ssw_1990/article/details/52220466

    http://www.tuicool.com/articles/uIRZFv

    http://mt.sohu.com/20160514/n449468405.shtml

    http://blog.csdn.net/asongoficeandfire/article/details/21490101

    http://confluence.jetbrains.com/display/IntelliJIDEA/Working+with+Scala+Console

    http://my.oschina.net/jamesju/blog/83659

     经过资料查询,做几个实验。

    基本与sql的实现方式一致,方便理解。

    第一步 实现分析 
    所有订单中每年最畅销货品: 
    1、求出每年每个货品的销售金额

    scala>select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid

    2、求出每年单品销售的最大金额

    scala>select d.theyear,max(d.sumofamount) as maxofamount from (select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid) d group by d.theyear

    3、求出每年与销售额最大相符的货品就是最畅销货品

    scala>select distinct  e.theyear,e.itemid,f.maxofamount from (select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid) e join (select d.theyear,max(d.sumofamount) as maxofamount from (select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid) d group by d.theyear) f on (e.theyear=f.theyear and e.sumofamount=f.maxofamount) order by e.theyear

    第二步 实现SQL语句

    scala>hiveContext.sql("select distinct  e.theyear,e.itemid,f.maxofamount from (select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid) e join (select d.theyear,max(d.sumofamount) as maxofamount from (select c.theyear,b.itemid,sum(b.amount) as sumofamount from tbStock a join tbStockDetail b on a.ordernumber=b.ordernumber join tbDate  c on a.dateid=c.dateid group by c.theyear,b.itemid) d group by d.theyear) f on (e.theyear=f.theyear and e.sumofamount=f.maxofamount) order by e.theyear").collect().foreach(println)
  • 相关阅读:
    安装acdsee 3.1后出错
    周末游山
    SQL Server不存在或访问被拒绝 Windows里的一个bug
    将数据库的存储过程及其参数导出来的方法
    VS出错问题集锦
    25 网页设计之页脚设计灵感
    需求沟通和实施
    Mootools插件闪烁的标题
    最近常常干出一些骑着驴找驴的事来
    php表单在提交之后再后退,表单的内容默认是被清空的
  • 原文地址:https://www.cnblogs.com/wcLT/p/5826329.html
Copyright © 2011-2022 走看看