GVKun编程网logo

使用SQL计算最长的狂欢观看连胜(最长连续活跃天数 sql)

20

本篇文章给大家谈谈使用SQL计算最长的狂欢观看连胜,以及最长连续活跃天数sql的知识点,同时本文还将给你拓展32位字长的计算机是指能计算最大为32位十进制的计算机吗、excel计算最新个税方法介绍、G

本篇文章给大家谈谈使用SQL计算最长的狂欢观看连胜,以及最长连续活跃天数 sql的知识点,同时本文还将给你拓展32位字长的计算机是指能计算最大为32位十进制的计算机吗、excel计算最新个税方法介绍、Go 和 PHP 实现计算最长公共前缀、java BigDecimal计算与mysql计算值不一致问题等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

使用SQL计算最长的狂欢观看连胜(最长连续活跃天数 sql)

使用SQL计算最长的狂欢观看连胜(最长连续活跃天数 sql)

我正在尝试处理一些观看狂欢的统计信息,我想找出 最长的狂欢 连胜纪录( 暴跌
是指多个节目以优惠的方式观看,一个又一个,相距不超过2个小时)。数据如下所示:

datetime                user_id program2013-09-01 00:01:18     1       A2013-09-10 14:03:14     1       B2013-09-20 17:02:12     2       A  2013-09-21 00:03:22     2       C  <-- user 2 binge start2013-09-21 01:23:22     2       M2013-09-21 03:03:22     2       E2013-09-21 04:03:22     2       F  2013-09-21 06:03:22     2       G  <-- user 2 binge end2013-09-21 09:03:22     2       H2013-09-03 18:21:09     3       D2013-09-21 09:03:22     2       H2013-09-24 19:21:00     2       X  <-- user 2 second binge start2013-09-24 20:21:00     2       Y2013-09-24 21:21:00     2       Z  <-- user 2 second binge end

sqlfiddle

在此示例中,用户2持续了6个小时的狂欢,后来又持续了2个小时。

我想要的最终结果是这样的:

user_id     binge     length2           1         6 hours2           2         2 hours

可以直接在数据库中计算吗?

答案1

小编典典

这是识别数据中的序列/条纹的问题。我这样做的首选方式是,

  • 使用LAG功能识别每个条纹的开始
  • 使用SUM函数为每个条纹分配一个唯一的数字
  • 然后按此唯一编号分组以进行进一步处理

询问:

with start_grp as (  select dt, user_id, programme,         case when dt - lag(dt,1) over (partition by user_id order by dt)                    > interval ''0 day 2:00:00''              then 1              else 0         end grp_start  from binge  ),assign_grp as (  select dt, user_id, programme,  sum(grp_start) over (partition by user_id order by dt) grp  from start_grp)select user_id, grp as binge, max(dt) - min(dt) as binge_lengthfrom assign_grpgroup by user_id, grphaving count(programme) > 1

在这里,狂欢列可能不会以顺序的方式出现。您可以在最终查询中使用ROW_NUMBER函数进行更正。

演示于 [sqlfiddle](http://sqlfiddle.com/#!12/cb1a2/5)

32位字长的计算机是指能计算最大为32位十进制的计算机吗

32位字长的计算机是指能计算最大为32位十进制的计算机吗

32位字长的计算机不是指能计算最大为32位十进制的计算机,而是指能计算最大为32位二进制的计算机;32位计算机的cpu一次最多能处理32位数据,例如它的eax寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。

32位字长的计算机是指能计算最大为32位十进制的计算机吗

32位字长的计算机是指能计算最大为32位二进制的计算机。

32位计算机的CPU一次最多能处理32位数据,例如它的EAX寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。

32位机是指在单位时间能处理字长为32位的二进制数据

1、电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制容数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU

2、8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节,一个字节是8位

3、字节和字长的区别:由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字长的长度是不固定的,对于不同的CPU、字长的长度也不一样

以上就是32位字长的计算机是指能计算最大为32位十进制的计算机吗的详细内容,更多请关注php中文网其它相关文章!

excel计算最新个税方法介绍

excel计算最新个税方法介绍

1、如图为个税表格示例。

excel计算最新个税方法介绍

2、首先,在【应发工资】单元格下输入金额,具体如图所示:

excel计算最新个税方法介绍

3、然后在【个税】单元格下输入公式:=MAX(0,(A8-5000)*C2:C5-D2:D5),具体如图所示:

注意:此公式大概理解即可,不必过多关注细节。

excel计算最新个税方法介绍

4、按下Ctrl+Shift+Enter键,就能生成一个结果值,具体如图所示:

excel计算最新个税方法介绍

5、可以尝试修改【应发工资】,然后对应的个税也会发生变化,具体如图所示:

excel计算最新个税方法介绍

以上就是excel计算最新个税方法介绍的详细内容,更多请关注php中文网其它相关文章!

Go 和 PHP 实现计算最长公共前缀

Go 和 PHP 实现计算最长公共前缀

原文链接:go letcode,作者:三斤和他的喵 php 代码个人原创

最长公共前缀(Longest-Common-Prefix)

题干如下:

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
  输入: ["flower","flow","flight"]
  输出: "fl"
示例 2:
  输入: ["dog","racecar","car"]
  输出: ""
解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z 。
来源:力扣

解题思路

首先我们从题干入手,求字符串数组的公共前缀,那么什么是公共前缀呢?其实就是所有字符串都有的子串,并且这个子串的位置还比较特殊,它在字符串的开始位置

有了这个认知之后,我们随意取两个字符串 S1S2,先得出 S1S2 的公共前缀,记为 P1。如果没有公共前缀,那么直接返回空字符串,如果存在 P1,那么将 P1S3 比较,得出公共前缀 P2,以此类推。( P1的长度一定是大于等于 P2 )。

至于如何求公共前缀 P,流程图如下:

Go 实现

func longestCommonPrefix(strs []string) string {
    if len(strs) <= 0 {
        return ""
    }
    // 将前缀初始化为第一个元素值
    var prefix = strs[0]
    for i := 1; i< len(strs); i++ {
        // 判断字符串是否是prefix开头的,如果是 strings.Index 返回 0
        if strings.Index(strs[i], prefix) != 0 {
            // 去掉前缀的最后一个字符
            prefix = prefix[:len(prefix)-1]
            // 因为会执行 i++,为了保证 i 不变,先 i--
            i--
        }
    }
    return prefix
}

PHP 实现

function longestCommonPrefix($strs) {
    if (count($strs) <= 0) {
        return '''';
    }

    // 将前缀初始化为第一个元素值
    $prefix = $strs[0];
    $count = count($strs);
    for ($i = 0; $i < $count; $i++) {
        if ($prefix !== '''' && strpos($strs[$i], $prefix) !== 0) {
            $prefix = substr($prefix, 0, -1);
            $i--;
        }
    }

    return $prefix;
}

echo longestCommonPrefix([''张A'', ''张ABC'', ''张C'', ''张哈哈'']); // output:张
// echo longestCommonPrefix([''abs'', ''abx'', ''abb'', ''abd'']); // output:ab
// echo longestCommonPrefix([''abs'']); // output:abs

是兄弟就来学习变得更强 -> 去学习

首发于 何晓东 博客

java BigDecimal计算与mysql计算值不一致问题

java BigDecimal计算与mysql计算值不一致问题

各位大佬 我使用new BigDecimal算出来的值与直接用数据库算不一样,请各位大佬讲解下,顺便有什么解决办法吗

我觉得不是因为bigdecimal设置了四舍五入的问题,但是我用double计算和mysql差不多,但是double计算不会有精度损失问题吗?

java:

public static void main(String[] args) {
    BigDecimal bigDecimal = new BigDecimal("240").divide(new BigDecimal("1.06"), RoundingMode.HALF_UP).multiply(new BigDecimal("0.06")).setScale(2, RoundingMode.HALF_UP);
    System.out.println(240d/1.06d*0.06d); //13.584905660377357
    System.out.println(bigDecimal.doubleValue()); 13.56
}

mysql:

SELECT 226.42*0.06 --13.5852

今天关于使用SQL计算最长的狂欢观看连胜最长连续活跃天数 sql的讲解已经结束,谢谢您的阅读,如果想了解更多关于32位字长的计算机是指能计算最大为32位十进制的计算机吗、excel计算最新个税方法介绍、Go 和 PHP 实现计算最长公共前缀、java BigDecimal计算与mysql计算值不一致问题的相关知识,请在本站搜索。

本文标签: