当前位置: 首页 > 面试题库 >

当某些值可以为NULL时,通过带有GROUP BY的SQL通过MS Access在四分位数/百分位数中

姬朗
2023-03-14
问题内容

我正在寻找一个可以为NULL的字段的子组的百分位数。字段IU为1或为Null。具体来说:

*my table: tblFirst250
*group by: IU = 1 (which is Nullable)
*percentile of: GM (which is Nullable)

我从以下内容开始(但我愿意采取更好的方法):

select T.groupField, 0.75*(select max(myField) from myTable where
myTable.myField in (select top 25 percent myField from myTable where
myTable.groupField = T.groupField order by myField)) + 0.25*(select
min(myField) from myTable where myTable.myField in (select top 75 percent
myField from myTable where myTable.groupField = T.groupField order by
myField desc)) AS 25Percentile from myTable AS T group by T.groupField

直接从此处获取:http :
//blogannath.blogspot.com/2010/03/microsoft-access-tips-tricks-
statistics.html#ixzz3dEf9ZJSq

到目前为止,我有这个:

SELECT T.IU, 0.75*(SELECT Max(GM) FROM tblFirst250 WHERE tblFirst250.GM IN
(SELECT TOP 25 PERCENT GM FROM tblFirst250
WHERE tblFirst250.IU = 1 AND GM Is Not Null ORDER BY GM)) + 0.25*
(SELECT Min(GM) FROM tblFirst250 WHERE tblFirst250.GM IN
(SELECT TOP 75 PERCENT GM FROM tblFirst250 
WHERE tblFirst250.IU = 1 AND GM Is Not Null ORDER BY GM desc)) AS 25Percentile 
FROM tblFirst250 AS T 
GROUP BY T.IU;

产生:IU,1; 25%-0.706278906030414,-0.706278906030414

…看起来像是分配给所有内容的所有内容的四分位数。

问题/问题/要求/注释:

  1. 我想下面的值是四分位数25,其中IU = 1:IU 1; 25%-0.706278906030414
  2. 查询速度很慢。
  3. 我认为,正是这些子查询使我不胜其烦。

问题答案:

底部附近只是缺少的WHERE子句:

SELECT T.IU, 0.75*(SELECT Max(GM) FROM tblFirst250 
WHERE tblFirst250.GM IN (SELECT TOP 25 PERCENT GM FROM tblFirst250 WHERE tblFirst250.IU = 1 AND GM Is Not Null ORDER BY GM)) + 0.25*(SELECT Min(GM) FROM tblFirst250 WHERE tblFirst250.GM IN (SELECT TOP 75 PERCENT GM FROM tblFirst250 WHERE tblFirst250.IU = 1 AND GM Is Not Null ORDER BY GM DESC))  AS 25Percentile 
FROM tblFirst250 AS T
WHERE T.IU = 1
GROUP BY T.IU;


 类似资料:
  • 问题内容: 我有一个非常简单的表,像这样: 它包含来自不同传感器的数千条日志。 我希望所有传感器都具有Q1和Q3。 我可以对每个数据执行一次查询,但对所有传感器执行一次查询会更好(从一次查询中获取Q1和Q3) 尽管这将是一个相当简单的操作,因为四分位数被广泛使用,并且是频率计算中的主要统计变量之一。事实是,我发现了很多过于复杂的解决方案,而我却希望找到一些简洁明了的东西。 有人可以给我提示吗? 编

  • 我正在用Spring Boot2编写一个应用程序。我的方法试图产生价值,直到价值是唯一的。每个唯一生成的值都被添加到缓存中。一般来说,它应该在第一次尝试时生成值,但是应用程序运行得越多,生成的值就有越多的机会出现重复,并且需要再次生成。 我想有度量,显示值的百分位数。 假设我的代码如下: 我使用千分尺,但不知道我应该从什么开始。因为为了计算百分位数,我需要存储的不是单个值,而是值的数组

  • 我有如下64位值: 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1101 0011 给定数字流的十进制值为-45。 我想分成四个16位值: 1111111111111111111 1111111111111111111 1111111111111111111111111 1111111111111111

  • 好吧,所以我试图做一些看起来应该相当简单的事情,但是有了这些新的NIO接口,事情让我很困惑!这是我想做的,我需要扫描文件作为字节,直到遇到某些字节!当我遇到那些特定的字节时,需要抓住数据的那一部分并对其做一些事情,然后继续前进并再次这样做。我本以为在ByteBuffer中有了所有这些标记、位置和限制,我就能做到这一点,但我似乎无法让它工作!这是我到目前为止... 测验正文: Test.java:

  • 问题内容: 是否可以通过以参数作为参数的javascript函数? 例: 问题答案: 使用“关闭”: 这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。

  • 我对Java很陌生,只是有点纠结于数组。我有一个代码块,我已经写了当遵循教程,但正在努力理解它,希望有人能解释给我。 null 对不起,如果这是一个琐碎的问题给你,但这是最好的地方,我可以想到转向。