• 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)
  • 相关阅读:
    Ubuntu18.04安装PHP7.3
    常用的正则表达式大全
    python实现感知机线性分类模型
    Python-基于向量机SVM的文本分类
    ssh远程登录命令简单实例
    js页面间通信方法(storage事件)(浏览器页面间通信方法)
    Node Sass could not find a binding for your current environment 解决办法
    git上传遇到 GitHub could not read Username 的解决办法
    Vue新手村之新手村概述
    Vue新手村任务之任务前言
  • 原文地址:https://www.cnblogs.com/wcLT/p/5826329.html
Copyright © 2020-2023  润新知