精华内容
下载资源
问答
  • 数据说明: ...计算每个品牌每个月的销售额,到当前月的销售额,每个月到当前月的最大销售额。 结果展示: 品牌 月份 当月销售额 截至到当前月的销售额 截至当前月的最大销售额 1 100 100 100 2 249 349 ...

    数据说明:
    日期,品牌,销售额

    计算每个品牌每个月的销售额,到当前月的销售额,每个月到当前月的最大销售额。

    结果展示:
    品牌 月份 当月销售额 截至到当前月的销售额 截至当前月的最大销售额
    1 100 100 100
    2 249 349 249
    都要保存到MYSQL

    
    import java.util.Properties
    
    import org.apache.spark.rdd.RDD
    import org.apache.spark.{SparkConf, SparkContext}
    import org.apache.spark.sql.{DataFrame, SQLContext, SaveMode}
    
    object Need1 {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setMaster("local").setAppName(this.getClass.getSimpleName)
        val sc = new SparkContext(conf)
        val sQLContext = new SQLContext(sc)
        import sQLContext.implicits._
        val sorceFile: RDD[String] = sc.textFile("E:\\五道口大数据\\吉祥spark开始\\20200205\\sparkSQL第二天需求\\需求1\\data.txt")
        val df: DataFrame = sorceFile.map(line => {
          val splits = line.split(",")
    
          (splits(0).substring(0,7), splits(1),splits(2))
        }).toDF("month", "brand", "money")
        df.createTempView("salesperson ")
    
        /**
          * 品牌	月份	当月销售额	截至到当前月的销售额	截至当前月的最大销售额
          * 1        100                   100                      100
          * 2        249                   349                      249
          *select name,months,sum(money) as money from t_store group by name,months
          * 我的答案select brand,year,month,sum(money) as money ,sum(sum(money))over(ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)  as culmoney  ,
          * max(money) as maxmoney from salesperson group by brand,year,month
          * select brand,years,month from (select brand,month,month,sum(money) as money ,sum(sum(money))over(ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)  as culmoney ,
          * max(money) as maxmoney from salesperson group by brand,month,years)
          */
        val result: DataFrame = sQLContext.sql(
          """
             select brand,month,month_money,
             sum(month_money) over(partition by brand order by month ) end_money,
             max(month_money) over(partition by brand order by month ) max_money
             from
             (select brand,month,sum(money) as month_money from salesperson
             group by brand,month)
          """.stripMargin)
        val url:String="jdbc:mysql://localhost:3306/stu?characterEncoding=utf-8&serverTimezone=Asia/Shanghai"
        val table:String="need02"
        val conn = new Properties()
        conn.setProperty("user","root")
        conn.setProperty("password","123")
        conn.setProperty("driver","com.mysql.jdbc.Driver")
        result.write.mode(SaveMode.Overwrite).jdbc(url,table,conn)
          sc.stop()
    
    
      }
    
    }
    
    展开全文
  • python计算公司销售额的同比增长率

    万次阅读 2018-11-10 11:32:40
    同比、环比一直在很多场合中广泛地被使用到,今天是基于一个小数据集来计算一下销售额的同比增长率,对于同比和环比的了解之前主要是来源于业务方面的需求,这里为了更加准确定义同比,贴上百度百科的定义如下: ...

         同比、环比一直在很多场合中广泛地被使用到,今天是基于一个小数据集来计算一下销售额的同比增长率,对于同比和环比的了解之前主要是来源于业务方面的需求,这里为了更加准确定义同比,贴上百度百科的定义如下:

    比如说2017年8月的产值100万,2018年8月的产值300万,同比增长为:(300-100)÷100*100%=200% 
    同比增长率一般是指和上一年同期相比较的增长率。
    某个指标的同比增长率=(现年的某个指标的值-上年同期这个指标的值)/上年同期这个指标的值。
    某个指标的同期比=(本年的某个指标的值-去年同期这个指标的值)/去年同期这个指标的值

        数据集如下:

        数据集中的数据记录数量很少,一共50条记录左右,具体同比计算实践如下:

    #!usr/bin/env python
    #encoding:utf-8
    from __future__ import division
    
    
    '''
    __Author__:沂水寒城
    功能:计算企业销售额的同比增长率
    '''
    
    import sys
    import xlrd
    reload(sys)
    sys.setdefaultencoding("utf-8")
    
    
    def dataPairCal(one,two):
        '''
        单对同期数据计算
        '''
        if one and two:
            return two/one-1
        else:
            return 0
    
    
    def handleData(datapath='data.xlsx'):
        '''
        从Excel中抽取出来数据,并计算同比
        '''
        data_dict,res_dict={},{}
        for year in [2016,2017,2018]:
            data_dict[year]={}
            for one in range(1,13):
                data_dict[year][one]=0
        workbook=xlrd.open_workbook(datapath,'rb')
        sheet_one=workbook.sheets()[0]
        row_num,col_num=sheet_one.nrows,sheet_one.ncols
        name_list=[]
        for i in range(4,row_num):
            company,money=sheet_one.cell_value(i,0),sheet_one.cell_value(i,1)
            month,year=sheet_one.cell_value(i,2),sheet_one.cell_value(i,3)
            data_dict[year][month]=money
        print data_dict
        dict1,dict2,dict3=data_dict[2016],data_dict[2017],data_dict[2018]
        for i in range(1,13):
            one_tmp_key='2016_2017_'+str(i)
            res_dict[one_tmp_key]=dataPairCal(dict1[i],dict2[i])
        for i in range(1,13):
            one_tmp_key='2017_2018_'+str(i)
            res_dict[one_tmp_key]=dataPairCal(dict2[i],dict3[i])
        print res_dict
    
    
    
    
    
    
    
    if __name__ == '__main__':
        handleData(datapath='data.xlsx')

        结果如下:

    {2016: {1: 0, 2: 0, 3: 2932137.0, 4: 5601712.0, 5: 4555366.0, 6: 7754956.0, 7: 3190944.0, 8: 19781.0, 9: 10909596.0, 10: 1697156.0, 11: 16921888.0, 12: 673851.0}, 2017: {1: 690055.0, 2: 584111.0, 3: 947528.0, 4: 579917.0, 5: 539401.0, 6: 459675.0, 7: 485340.0, 8: 9544196.0, 9: 6345747.0, 10: 12599740.0, 11: 4262813.0, 12: 14145928.0}, 2018: {1: 13135177.0, 2: 1773997.0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}}
    
    
    
    {'2016_2017_8': 481.4930994388555, '2016_2017_9': -0.4183334561609797, '2016_2017_6': -0.9407250021792516, '2016_2017_7': -0.8479008092902915, '2016_2017_4': -0.8964750419157572, '2016_2017_5': -0.8815899754267824, '2016_2017_2': 0, '2016_2017_3': -0.676847296016523, '2016_2017_1': 0, '2016_2017_10': 6.424031733087589, '2016_2017_11': -0.7480888066390701, '2016_2017_12': 19.99266455047184, '2017_2018_10': 0, '2017_2018_11': 0, '2017_2018_12': 0, '2017_2018_2': 2.037088840990839, '2017_2018_3': 0, '2017_2018_1': 18.034971125489996, '2017_2018_6': 0, '2017_2018_7': 0, '2017_2018_4': 0, '2017_2018_5': 0, '2017_2018_8': 0, '2017_2018_9': 0}
    

        结果中2016_2017_8表示的是2017年和2016年8月销售额的同比分析计算结果,很简单的小功能,主要是熟悉一下同比的概念。

    展开全文
  • sql笔记-计算每月累计销售额

    千次阅读 2020-02-04 10:27:23
    1、先计算店铺每月的销售额,店铺、月份、销售额,建立临时表a。 2、通过自连接的方式将表a自连接,以店铺名为匹配条件,得到每个店铺每个月与该店铺其他月份的连接结果。得到表b。 3、筛选表b中某店铺前一个月份列...

    1、先计算店铺每月的销售额,店铺、月份、销售额,建立临时表a。
    2、通过自连接的方式将表a自连接,以店铺名为匹配条件,得到每个店铺每个月与该店铺其他月份的连接结果。得到表b。
    3、筛选表b中某店铺前一个月份列大于等于后一个月份列的记录,对金额做sum聚合,得到该店铺该月份的累计值,group by字段为店铺名、前一个月份列、当月金额值。得到结果表c。

    1)按照商店名称和月份进行分组统计:
    create table tmp_store1 as
    select name,months,sum(money) as money from t_store group by name,months;
    2)对tmp_store1 表里面的数据进行自连接:
    create table tmp_store2 as
    select a.name aname,a.months amonths,a.money amoney,b.name bname,b.months bmonths,b.money bmoney from tmp_store1 a
    join tmp_store1 b on a.name=b.name order by aname,amonths;
    3)比较统计:
    select aname,amonths,amoney,sum(bmoney) as total from tmp_store2 where amonths >= bmonths group by aname,amonths,amoney;

    展开全文
  • 写在前面2016年天猫双十一当天,零点的倒计时话音未落,52...天猫这个大屏后面的技术应该是使用流计算,阿里使用Java将Storm重写了,叫JStrom(https://github.com/alibaba/jstorm),最近学习SparkStream和Kafka,可以简

    写在前面

    2016年天猫双十一当天,零点的倒计时话音未落,52秒交易额冲破10亿。随后,又迅速在0时6分28秒,达到100亿!每一秒开猫大屏上的交易额都在刷新,这种时实刷新的大屏看着感觉超爽。天猫这个大屏后面的技术应该是使用流计算,阿里使用Java将Storm重写了,叫JStrom(https://github.com/alibaba/jstorm),最近学习SparkStream和Kafka,可以简单模仿一下这个时实计算成交额的过程,主要目的是实际运用这些技术,也了解一下技术的运用场景,加深对技术的理解。

    大屏

    实时计算模型

    下图所示为通用SparkStream时实计算模型,主要分为三部分

    1. 数据源
      我们这里的数据源选用了Kafka,关于Kafka的安装与使用说明可以参考这里https://kafkadoc.beanmr.com/

    2. SparkStream计算
      SparkStream是实时计算的核心,这们这里也是近时实计算,选择一个时间窗口,对时间窗口中的数据做离线计算。

    3. 数据落地
      SparkStream算好的结果可以存HDFS/Mysql/Redis等等,我们这里对商品销售额计算过程有涉及累加,所以选择了Redis

    时实计算

    业务模型介绍

    我们模仿一个电商系统,每时每刻都有订单成交,每一笔成交的数据以一个事件发送到Kafka中,SparkStream每一分中从Kafka中读取一次数据,计算一分钟内每个商品的销售额,然而写入Redis,并在Redis中累加每分钟的数据,Redis中主要存三种结果数量,从开始到当前总销售额、从开始到当前每个商品销售额、上一分钟每个商品的销售额

    Kafka生产者,模拟每时每刻订单交易

    object OrderProducer {
    
    
      def main(args: Array[String]): Unit = {
    
        //Kafka参数设置
        val topic = "order"
        val brokers = "127.0.0.1:9092"
        val props = new Properties()
        props.put("metadata.broker.list", brokers)
        props.put("serializer.class", "kafka.serializer.StringEncoder")
        val kafkaConfig = new ProducerConfig(props)
        //创建生产者
        val producer = new Producer[String, String](kafkaConfig)
    
        while (true) {
          //随机生成10以内ID
          val id = Random.nextInt(10)
          //创建订单成交事件
          val event = new JSONObject();
          //商品ID
          event.put("id", id)
          //商品成交价格
          event.put("price", Random.nextInt(10000))
    
          //发送信息
          producer.send(new KeyedMessage[String, String](topic, event.toString))
          println("Message sent: " + event)
          //随机暂停一段时间
          Thread.sleep(Random.nextInt(100))
        }
      }
    
    }

    生产者输出结果:

    Message sent: {"price":3959,"id":6}
    Message sent: {"price":1579,"id":0}
    Message sent: {"price":857,"id":6}
    Message sent: {"price":8440,"id":1}
    Message sent: {"price":6873,"id":6}
    Message sent: {"price":6202,"id":2}
    Message sent: {"price":8403,"id":6}
    Message sent: {"price":7866,"id":2}
    Message sent: {"price":9441,"id":5}
    Message sent: {"price":6880,"id":4}
    Message sent: {"price":4572,"id":5}
    Message sent: {"price":509,"id":3}
    Message sent: {"price":7526,"id":0}

    上述代码主要模拟一家店铺有十件商品,ID从0到9,每隔一小段随机时间成交一单,成交价格以分为单位,每成交一笔就像Kafka中发送一个消息,用这个生产者模拟线上的真实交易,在实际生产中成交数据可以从日志中获取。

    Kafka消费者,SparkStream时实计算

    
    object OrderConsumer {
      //Redis配置
      val dbIndex = 0
      //每件商品总销售额
      val orderTotalKey = "app::order::total"
      //每件商品上一分钟销售额
      val oneMinTotalKey = "app::order::product"
      //总销售额
      val totalKey = "app::order::all"
    
    
      def main(args: Array[String]): Unit = {
    
        // 创建 StreamingContext 时间片为1秒
        val conf = new SparkConf().setMaster("local").setAppName("UserClickCountStat")
        val ssc = new StreamingContext(conf, Seconds(1))
    
        // Kafka 配置
        val topics = Set("order")
        val brokers = "127.0.0.1:9092"
        val kafkaParams = Map[String, String](
          "metadata.broker.list" -> brokers,
          "serializer.class" -> "kafka.serializer.StringEncoder")
    
    
        // 创建一个 direct stream
        val kafkaStream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topics)
    
        //解析JSON
        val events = kafkaStream.flatMap(line => Some(JSON.parseObject(line._2)))
    
        // 按ID分组统计个数与价格总合
        val orders = events.map(x => (x.getString("id"), x.getLong("price"))).groupByKey().map(x => (x._1, x._2.size, x._2.reduceLeft(_ + _)))
    
        //输出
        orders.foreachRDD(x =>
          x.foreachPartition(partition =>
            partition.foreach(x => {
    
    
              println("id=" + x._1 + " count=" + x._2 + " price=" + x._3)
    
              //保存到Redis中
              val jedis = RedisClient.pool.getResource
              jedis.select(dbIndex)
              //每个商品销售额累加
              jedis.hincrBy(orderTotalKey, x._1, x._3)
              //上一分钟第每个商品销售额
              jedis.hset(oneMinTotalKey, x._1.toString, x._3.toString)
              //总销售额累加
              jedis.incrBy(totalKey, x._3)
              RedisClient.pool.returnResource(jedis)
    
    
            })
          ))
    
    
        ssc.start()
        ssc.awaitTermination()
      }
    
    }

    消费者每分钟输出

    id=4 count=3 price=7208
    id=8 count=2 price=10152
    id=7 count=1 price=6928
    id=5 count=1 price=3327
    id=6 count=3 price=20483
    id=0 count=2 price=9882
    id=2 count=2 price=9191
    id=3 count=2 price=8211
    id=1 count=3 price=9906

    Redis客户端

    object RedisClient extends Serializable {
    
      val redisHost = "127.0.0.1"
      val redisPort = 6379
      val redisTimeout = 30000
      lazy val pool = new JedisPool(new GenericObjectPoolConfig(), redisHost, redisPort, redisTimeout)
    
      lazy val hook = new Thread {
        override def run = {
          println("Execute hook thread: " + this)
          pool.destroy()
        }
      }
      sys.addShutdownHook(hook.run)
    
    
      def main(args: Array[String]): Unit = {
        val dbIndex = 0
    
        val jedis = RedisClient.pool.getResource
        jedis.select(dbIndex)
        jedis.set("test", "1")
        println(jedis.get("test"))
        RedisClient.pool.returnResource(jedis)
    
      }
    
    
    }
    

    Redis结果

    上一分钟商品销售额,有了这个数据就可以做成动态的图表展示时实交易额了
    redis

    每件商品总销售额
    这里写图片描述

    总销售额,这就是天猫大屏上的1111亿了
    总数

    完整代码地址

    http://git.oschina.net/whzhaochao/spark-learning/tree/master/spark/src/main/scala/com/spark/stream/order

    原文地址:http://blog.csdn.net/whzhaochao/article/details/77717660

    展开全文
  • 计算过去一段时间的销售额

    千次阅读 2020-04-30 11:40:58
    之前我们有推送过计算过去一段时间数的文章,介绍了一个时间智能函数。我们都知道运用时间智能函数需要有完整的日期表,...先是我们的源数据,我们主要讨论销售场景,数据包括订单编号,下单月份,产品,金额和客户...
  • PTA 公司季度销售额以及年销售额统计
  • 销售额计算(Calculating Sales)

    千次阅读 2016-06-21 21:37:38
    System.out.printf("本单销售金额为:%.2f\n",sales); } }   运行结果: 请输入产品号码:21001 请输入产品号码:21002 请输入产品号码:21001 请输入产品号码:21005 请输入产品号码:...
  • //按日期按地区计算销售额2016-09-04_Area /* 继续细分到城市,无非是key该表一下,其他地方都是一样的 */ val key = arr( 3 ).substring( 0 , 10 )+ "_" +arr( 0 ) val amt = arr( 2 ).toInt (key , ...
  • select leader , employee , array_agg(employee) over(partition by leader order by employee) from ( select 'A' as leader , 'E1' as employee union all select 'A' as leader , 'E2' as employee ...
  • 1. 查询每个月的销售额 因为数据库时间格式用的是时间戳 秒,所以得先把时间戳转换成时间类型的格式 FROM_UNIXTIME( 时间字段) 将时间戳转换成时间格式 select month(FROM_UNIXTIME(create_time)) as month,sum(order...
  • 统计销售额

    千次阅读 2018-09-26 21:50:21
    之前被交接点工作,有一个用excel统计销售额的,也算学到一项技能。 从系统导出来的原始数据特别杂乱,字段主要有姓名、订单号、产品内容、产品金额。其中产品内容有机票、餐食、行李、改姓名、改期(随便列的)。...
  • 1.运输公司对用户计算运费.路程越远每公里运费越低. 每公里每吨货物的基本运费p = 3;用户需要输入货 物重量w和距离s;根据距离的不同折扣d不同(具体见) 下面的表格,要求根据用户输入的w和s,计算出总运费f 其...
  • 现在要查每个用户的日销售额和月销售额,本来最简单的方法是先把所有用户查出来,然后再c#代码中for循环中再select sum(changemoney) from liushui where userid=? 的 现在想试试看一个SQL语句 就查出来,经搜索...
  • 销售情况见下表,要求计算1月累计销售额,2月累计销售额…… 输入公式**=sum(B$2:B2)** 其他的使用填充,计算结果如下:
  • -- 名称、月份、销售额 然后插入数据: insert into tab values('铅笔',1,50),('橡皮',1,50),('小刀',1,58), ('铅笔',2,53),('橡皮',2,64),('小刀',2,75), ('铅笔',3,52),('橡皮',3,53),('小刀',3,54), ('...
  • (2)用hive对清洗后的数据进行统计,计算出2014年每月的销售额数据。 首先清洗数据。观察数据,可以看出price列,原始数据有负数,要把这样的记录清除掉,并查询出清洗后有多少条记录。然后建一个表查询出每日的...
  • 5 每个店铺的当月销售额和累计到当月的总销售额 店铺,月份,金额 a,01,150 a,01,200 b,01,1000 b,01,800 c,01,250 c,01,220 b,01,6000 a,02,2000 a,02,3000 b,02,1000 b,02,1500 c,02,350 c,02,280 ...
  • SQL Server 每日一题--每月销售额

    千次阅读 2019-12-01 22:22:36
    某销售公司每月都会统计每个销售人员当月的销售额,作为提成的标准。年底公司经理想看到本年每月每名销售的销售额,然后将这些数据作为今年发年终奖的参考。 一、问题 请编写出 SQL 语句,查询每名销售每个月的销售...
  • 可以用类继承,函数也行,只要能实现功能就行,,用c++编写,谢谢啦
  • 3、需求 编写Hive的HQL语句求出每个店铺的当月销售额和累计到当月的总销售额 4、解析 (1)按照商店名称和月份进行分组统计 create table tmp_store1 as select name,months,sum(money) as money from t_store ...
  • AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《如何利用计算机视觉增加便利店连锁每日销售额》、《基于图像 / 视频的人脸和人体分析基础技术及其应用介绍》、《基于昇腾AI处理器的计算机视觉应用》、...
  • 实时统计网站PV、UV+展示 flume+kafka+slipstream实现黑名单用户访问实时监测 实战SparkStream+Kafka+Redis实时计算商品销售额https://blog.csdn.net/whzhaochao/article/details/77717660 spark streaming从kafka...
  • 步骤:首先,必须隔离选定类别的销售额。然后,需要使用 EXCLUDE 表达式在所有其他类别中重复该值。之后,便可轻松了解每个类别的销售额与其他类别的差异。 因为类别是不固定的,可能是所有类别中的任意一个,所以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,194
精华内容 14,077
关键字:

怎么计算销售额