本篇文章给大家谈谈使用SQL计算最长的狂欢观看连胜,以及最长连续活跃天数sql的知识点,同时本文还将给你拓展32位字长的计算机是指能计算最大为32位十进制的计算机吗、excel计算最新个税方法介绍、G
本篇文章给大家谈谈使用SQL计算最长的狂欢观看连胜,以及最长连续活跃天数 sql的知识点,同时本文还将给你拓展32位字长的计算机是指能计算最大为32位十进制的计算机吗、excel计算最新个税方法介绍、Go 和 PHP 实现计算最长公共前缀、java BigDecimal计算与mysql计算值不一致问题等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 使用SQL计算最长的狂欢观看连胜(最长连续活跃天数 sql)
- 32位字长的计算机是指能计算最大为32位十进制的计算机吗
- excel计算最新个税方法介绍
- Go 和 PHP 实现计算最长公共前缀
- java BigDecimal计算与mysql计算值不一致问题
使用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位计算机的cpu一次最多能处理32位数据,例如它的eax寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。
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计算最新个税方法介绍
1、如图为个税表格示例。
2、首先,在【应发工资】单元格下输入金额,具体如图所示:
3、然后在【个税】单元格下输入公式:=MAX(0,(A8-5000)*C2:C5-D2:D5),具体如图所示:
注意:此公式大概理解即可,不必过多关注细节。
4、按下Ctrl+Shift+Enter键,就能生成一个结果值,具体如图所示:
5、可以尝试修改【应发工资】,然后对应的个税也会发生变化,具体如图所示:
以上就是excel计算最新个税方法介绍的详细内容,更多请关注php中文网其它相关文章!
Go 和 PHP 实现计算最长公共前缀
原文链接:go letcode,作者:三斤和他的喵 php 代码个人原创
最长公共前缀(Longest-Common-Prefix)
题干如下:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z 。
来源:力扣
解题思路
首先我们从题干入手,求字符串数组的公共前缀,那么什么是公共前缀呢?其实就是所有字符串都有的子串,并且这个子串的位置还比较特殊,它在字符串的开始位置。
有了这个认知之后,我们随意取两个字符串 S1 和 S2,先得出 S1 和 S2 的公共前缀,记为 P1。如果没有公共前缀,那么直接返回空字符串,如果存在 P1,那么将 P1 和 S3 比较,得出公共前缀 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计算值不一致问题
各位大佬 我使用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计算值不一致问题的相关知识,请在本站搜索。
本文标签: