当前位置: 首页 > wzjs >正文

怎么样自己做网站接订单网站建设公司好

怎么样自己做网站接订单,网站建设公司好,新手做电影网站好,网站和app的关系文章目录 概述题目:分组问题求解题解第一步:求解差值步骤二:窗口分组累加完整SQL 总结 概述 最近刷题时遇到一些比较有意思的题目,乍一遇上时还不知道怎么求解,在灵光一闪时找到了问题的求解答案,感觉还比…

文章目录

  • 概述
  • 题目:分组问题求解
  • 题解
    • 第一步:求解差值
    • 步骤二:窗口分组累加
    • 完整SQL
  • 总结

概述

最近刷题时遇到一些比较有意思的题目,乍一遇上时还不知道怎么求解,在灵光一闪时找到了问题的求解答案,感觉还比较有意思。题目虽然不是很难,但是要解答出来还是需要有一点思维的转弯,为了加深记忆,就选取了一道记录下来。

题目:分组问题求解

如下为电商公司用户访问时间数据,某个用户连续的访问记录如果时间间隔小于 60 秒,则分为同一个组.

表logs

字段名数据类型
idbigint
tsbigint

输入数据如下:

idts(秒)
100117523641234
100117523641256
100217523641278
100117523641334
100217523641434
100117523641534
100117523641544
100217523641634
100117523641638
100117523641654

参考结果:

idts(秒)group
1001175236412341
1001175236412561
1001175236413342
1001175236415343
1001175236415443
1001175236416384
1001175236416544
1002175236412781
1002175236414342
1002175236416343

题解

第一步:求解差值

因为需要按照id分组,求解每个用户连续访问时间间隔小于60秒,则放在同一组,所以需要使用窗口函数,将上一行的ts移动到下一行,进行差值运算。
需要用到的知识点:

  • PARTITION BY
  • LAG():下移值
WITH temp_001 AS (SELECT id,ts,ts - LAG(ts,1,ts) OVER (PARTITION BY id ORDER BY ts ASC) AS ts_diffFROM logs
)

输出如下:

idtsts_diff
10011752364123417523641234
10011752364125622
10011752364133478
100117523641534200
10011752364154410
10011752364163894
10011752364165416
10021752364127817523641278
100217523641434156
100217523641634200

步骤二:窗口分组累加

由上面的中间结果我们已经得出了一个ts的差值ts_diff,按照滑动 窗口顺序遍历窗口中的每一行数据,如果ts_diff的值大于指定的值60,则加1,否则加0。

第一行ts_diff的值大于60,则加1结果是1,然后第二行值为22加0,值还是为1

第二行和第一行的分组id就都是1了,分在了同一组达到了我们想要的效果。

第三行ts_diff的值是78大于60,加1结果为2,组的ID变成了2。

其他的依次如上。

SQL实现:

SELECT id,ts,SUM(IF(ts_diff>60,1,0)) OVER(PARTITION BY id  ORDER BY ts ASC) AS group
FROM temp_001

输出结果:

idts(秒)group
1001175236412341
1001175236412561
1001175236413342
1001175236415343
1001175236415443
1001175236416384
1001175236416544
1002175236412781
1002175236414342
1002175236416343

完整SQL

WITH temp_001 AS (SELECT id,ts,ts - LAG(ts,1,ts) OVER (PARTITION BY id ORDER BY ts ASC) AS ts_diffFROM logs
)
SELECT id,ts,SUM(IF(ts_diff>60,1,0)) OVER(PARTITION BY id  ORDER BY ts ASC) AS group
FROM temp_001;

总结

这道题考察的知识点就是对窗口的理解和运用,第一步下移并做差值运算一般都可以快速想到,第二步就需要一点点思维的闪光。利用IF做归一话处理并使用滑动窗口求和得到分组的组号。

http://www.dtcms.com/wzjs/162459.html

相关文章:

  • 公司注销 网站备案申请表广州的百度推广公司
  • 怎样做网站卖网站华为seo诊断及优化分析
  • 教做衣服的网站有哪些seo网站优化方法
  • 网站套网站代码竞价推广出价多少合适
  • 怎样建设网站首页百度关键词怎么刷上去
  • 咨询行业网站制作seo引擎优化是什么
  • 自己做网站 服务器常见的网站推广方式有哪些
  • 广州 网站建设长沙网络公司营销推广
  • 彩票网站建设制作北京朝阳区疫情最新情况
  • 安顺做网站合肥seo外包平台
  • 公司官网注册流程杭州网站优化方案
  • 做机电预算的网站网址大全是ie浏览器吗
  • 河南省安阳市建设银行网站seo是什么地方
  • 菜鸟移动端网站开发数据分析师培训需要多少钱
  • 企业网站的视频页如何做seo长沙
  • 开县网站建设百度app手机版
  • 平谷区住房和城乡建设委员会网站中山网站seo
  • 做购物网站适合的服务器网站页面分析作业
  • 门户网站建设为企业带来的好处百度官方网站下载
  • 服装设计考研哪些大学揭阳百度seo公司
  • 电商运营去哪里学比较好快速优化工具
  • 网站右侧浮动广告关键词有哪些
  • 怎样做网站的关键词湖南企业竞价优化首选
  • 分销系统平台有哪些搜索引擎优化方法
  • 可以发广告的网站外链火
  • 58同城网站建设推广网站建设品牌策划案
  • 北京婚恋网站哪家最好百度app官网下载安装
  • 网站建设公司唯美谷北京网站建设公司哪家好
  • 什么是网站运营seo教程技术整站优化
  • 怎么自己做彩票网站苏州新闻今天最新消息新闻事件