Tag: 差距和岛屿

SQL来确定最小连续的访问天数?

以下“用户历史logging”表格包含给定用户每天访问网站 (在UTC时间24小时内)的每一天的logging 。 它有成千上万的logging,但每个用户每天只有一个logging。 如果用户当天没有访问该网站,则不会生成任何logging。 Id UserId CreationDate —— —— ———— 750997 12 2009-07-07 18:42:20.723 750998 15 2009-07-07 18:42:20.927 751000 19 2009-07-07 18:42:22.283 我正在寻找的是这个表上的一个SQL查询, 性能很好 ,告诉我哪些用户名连续几天访问了网站,而不会错过任何一天。 换句话说,有多less用户在这个表中有连续(date前或日后)date的logging ? 如果序列中缺less任何一天,序列就会中断,应该在1处重新开始; 我们正在寻找已经连续几天没有任何差距的用户。 这个查询和特定的Stack Overflow徽章之间的任何相似之处纯属巧合,当然.. 🙂

检查连续x天 – 给定数据库中的时间戳

任何人都可以给我一个想法或提示如何检查数据库表(MySQL)连续X天login(用户名,时间戳)存储? Stackoverflow做到了这一点(例如徽章像发烧友 – 如果你连续30天左右login…)。 你需要使用什么function?怎么做? 类似于SELECT 1 FROM login_dates WHERE … ?

我如何分组连续的范围

我知道一些基本的SQL,但是这个超越了我。 我看起来高低,但没有骰子。 我需要查看以下数据,我可以在应用程序层代码中执行此操作。 但不幸的是,对于这个特定的代码,代码必须放在数据层中。 我正在使用T-SQL。 表 Date Crew DayType 01-02-11 John Doe SEA 02-02-11 John Doe SEA 03-02-11 John Doe SEA 04-02-11 John Doe HOME 05-02-11 John Doe HOME 06-02-11 John Doe SEA 我需要这样的看法 DateFrom DateTo Name DayType 01-02-11 03-02-11 John Doe SEA 04-02-11 05-02-11 John Doe HOME 06-02-11 06-02-11 John Doe SEA 不幸的是,基表是应用程序层需要格式显示所需的。 这是可能做的查询? […]

如何find与SQL运行计数器“差距”?

我想find一个SQL表中的第一个“差距”在柜台列。 例如,如果有值1,2,4和5我想找出3。 我当然可以按顺序获取值并手动执行,但是我想知道是否有办法在SQL中执行此操作。 另外,它应该是相当标准的SQL,与不同的DBMS一起工作。

在SQL Server中查找最小的未使用的数字

如何findSQL Server列中最小的未使用的数字? 我即将从Excel导入大量手动录制的logging到SQL Server表中。 它们都有一个数字ID(称为文档号),但是由于不再适用的原因,它们没有按顺序分配,这意味着从现在开始,当我的网站logging一个新的logging时,需要给它分配尽可能小的文档编号大于零)还没有被采取。 有没有办法通过普通的SQL来做到这一点,或者这是一个TSQL /代码的问题? 谢谢! 编辑 特别感谢WW提出的并发问题。 鉴于这是一个Web应用程序,它是multithreading的定义,任何人面对同样的问题应该考虑代码或数据库级锁来防止冲突。 LINQ FYI – 这可以通过LINQ使用以下代码完成: var nums = new [] { 1,2,3,4,6,7,9,10}; int nextNewNum = ( from n in nums where !nums.Select(nu => nu).Contains(n + 1) orderby n select n + 1 ).First(); nextNewNum == 5

如何find序列号在MySQL中的差距?

我们有一个数据库,其中一个表的值是从另一个系统导入的。 有一个自动增量列,并没有重复的值,但缺less值。 例如,运行这个查询: select count(id) from arrc_vouchers where id between 1 and 100 应该返回100,但它返回87。 有没有我可以运行的任何查询将返回缺less的数字的值? 例如,logging可能存在id 1-70和83-100,但是没有logging的id为71-82。 我想要返回71,72,73等 这可能吗?

MySQL如何填补范围内缺less的date?

我有一个2列,date和得分的表。 它最多有30个参赛作品,最近30天的参赛作品之一。 date score —————– 1.8.2010 19 2.8.2010 21 4.8.2010 14 7.8.2010 10 10.8.2010 14 我的问题是有些date不见了 – 我想看看: date score —————– 1.8.2010 19 2.8.2010 21 3.8.2010 0 4.8.2010 14 5.8.2010 0 6.8.2010 0 7.8.2010 10 … 我需要从单个查询得到:19,21,9,14,0,0,10,0,0,14 …这意味着缺less的date是填充0。 我知道如何获取所有的值,并在服务器端语言遍历date和缺less空白。 但是这是可能的在MySQL中做的,所以我按datesorting的结果,并得到缺失的部分。 编辑:在这个表中有另一个名为UserID的列,所以我有30.000个用户,其中一些在这个表中有得分。 如果date<30天前,我每天都会删除date,因为我需要为每个用户提供最后30天的分数。 原因是我制作了过去30天的用户活动图,并绘制了我需要用逗号分隔的30个值的图表。 所以我可以说在查询让我的USERID = 10203活动和查询会得到我30分,每过去30天。 我希望我现在更清楚。