遍历列的条目并用它们计算
Posted
技术标签:
【中文标题】遍历列的条目并用它们计算【英文标题】:Iterate through entries of column and calculate with them 【发布时间】:2017-03-28 09:24:16 【问题描述】:我需要遍历一个特定列的条目并使用这些条目进行计算。我的桌子是这样的:
FreeKB (Column to iterate) | FileSystem | Date | System |
---------------------------|------------|-----------|---------|
5000 | TestFS | 2017-03-28| TestSys |
7000 | TestFS | 2017-03-27| TestSys |
3000 | TestFS | 2017-03-26| TestSys |
10000 | TestFS | 2017-03-25| TestSys |
9000 | TestFS | 2017-03-24| TestSys |
8000 | TestFS | 2017-03-23| TestSys |
10000 | TestFS | 2017-03-22| TestSys |
11000 | TestFS | 2017-03-21| TestSys |
问题是:如何遍历“FreeKB”的所有条目并用它们计算?更具体地说:我想计算所有条目的中位数,其中 FreeKB 的数量缩小。我熟悉脚本和一点点 C++,但我是 SQL 的新手。
对不起,如果答案似乎很明显......
问候
编辑:
对于结果,我想以某种方式遍历表中每个单个 FileSystem 和 System 的最近 7 天的条目,查看 FreeKB 的数量在哪里缩小,并计算缩小数字的中位数。示例:从 2017 年 3 月 27 日到 2017 年 3 月 28 日,FreeKB 的数量减少了 2000 KB,从第 25 位减少到第 26 位,到 7000 年,到 2000 年从第 22 位到第 23 位。我想获得数字的中位数并计算文件系统何时可能电子邮件已满
【问题讨论】:
您真的需要mysql 和sql-server 的解决方案吗?它们是不同的产品。如果您可以解释您期望的 results 会是什么样子(作为另一个表格?),那么它可能会让您更清楚您在寻找什么。在general中,在SQL中,我们尝试编写set-based解决方案,而不是RBAR 对于结果,我想以某种方式遍历表中每个 FileSystem 和 System 的最近 7 天的条目,查看 FreeKB 的数量在哪里收缩,并计算收缩的中位数-数字。示例:从 2017 年 3 月 27 日到 2017 年 3 月 28 日,FreeKB 的数量减少了 2000 KB,从第 25 位减少到第 26 位,到 7000 年,到 2000 年从第 22 位到第 23 位。我想获得数字的中位数并计算文件系统何时可能电子邮件已满。 【参考方案1】:您可以在 SQL Server 中使用 CrossApply 这里有一些链接可以帮助您开始使用
http://weblogs.sqlteam.com/jeffs/archive/2007/10/18/sql-server-cross-apply.aspx https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/ https://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx
这里是示例代码
CREATE TABLE #test (FreeKb int,FileSystem varchar(50),[Date] Datetime)
INSERT INTO #test
SELECT 1001,'TestFS','2016/12/14' UNION
SELECT 1111,'TestFS','2017/01/01' UNION
SELECT 1223,'TestFS','2017/01/15' UNION
SELECT 1233,'TestFS','2017/01/02' UNION
SELECT 1321,'TestFS','2017/01/31' UNION
SELECT 1400,'TestFS','2016/12/12' UNION
SELECT 1456,'TestFS','2017/03/13'
SELECT a.*,b.newColumn FROM #test a
cross apply(
SELECT a.FreeKB/(SELECT count(FreeKB) from #test)as NewColumn
)b
【讨论】:
谢谢,但这篇文章被错误地放在了 SQL-Server 上。我想为 mssql 标记它,不知何故它被更改为 SQL-Server .. 嗯...刚刚想通了,***上的SQL-Server意思是mssql...对不起,谢谢你的回答 没问题。希望解决方案对您有所帮助。以上是关于遍历列的条目并用它们计算的主要内容,如果未能解决你的问题,请参考以下文章
如何遍历一个文件夹下的所有文件,并用md5函数算出所有文件的md5值?(用php实现)