我有一个用户要报告的请求,而我对SQL编程太陌生,不知道如何处理它。
我的用户想为每个员工ID知道两次访问之间的最小,平均和最大天数。我不知道该如何计算出访问1和访问2之间的天数;每个人员ID的访问2和访问3,依此类推。某些人员ID只有一次访问,而其他人(大多数)有多次访问(最多26次)。这是一些数据的快照(整个数据集超过14000条记录):
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
string englishWord = File.ReadAllText("c:/temp/english.txt");
string polishWord = File.ReadAllText("c:/temp/polish.txt");
foreach (var lineE in englishWord)
{
string lineEnglish = lineE;
}
foreach (var lineP in polishWord)
{
string linePolish = lineP;
}
string result = lineEnglish + " - " + linePolish;
result = File.WriteAllText"c:/temp/result.txt";
}
}
}
我的研究发现,有很多参考资料可以用来比较同一张表中的行,并且我发现了如何使用自连接和datadiff比较单个PersonID的一次访问与下一次访问的比较,但是如何从一个PersonID到另一个接下来,还是只访问1次就跳过那些PersonID?还是访问了多个StaffId的PersonID?
任何想法/建议都将受到极大的赞赏,因为我有两个要求将从中受益。
答案 0 :(得分:0)
您可以使用分析功能ADD ${JAR_FILE} ${directo}
来自https://www.techonthenet.com/sql_server/functions/lead.php
的示例LEAD (myvar,1) OVER ()
答案 1 :(得分:0)
对于平均天数,您可以使用汇总:
select personid,
(datediff(day, min(visitdate), max(visitdate)) * 1.0 / nullif(count(*) - 1, 0)
from t
group by personid;
我使用了SQL Server语法,但是在任何数据库中都存在相同的想法。平均值是最大值减去最小值,然后除以访问次数减去一。