相关疑难解决方法(0)

用MySQL计算中值的简单方法

使用MySQL计算中值的最简单(并且希望不是太慢)的方法是什么?我已经习惯AVG(x)了找到平均值,但我很难找到一种计算中位数的简单方法.现在,我将所有行返回给PHP,进行排序,然后选择中间行,但肯定必须有一些简单的方法在单个MySQL查询中执行此操作.

示例数据:

id | val
--------
 1    4
 2    7
 3    2
 4    2
 5    9
 6    8
 7    3
Run Code Online (Sandbox Code Playgroud)

排序上val给出2 2 3 4 7 8 9的,所以中间应该是4,与SELECT AVG(val)这== 5.

mysql sql statistics median

191
推荐指数
12
解决办法
22万
查看次数

用于计算子组中的排名和中位数的SQL排名查询

我想计算这个简单子组y位数:xy_table

  x | y --groups--> gid |   x | y --medians-->  gid |   x | y
-------             -------------               -------------
0.1 | 4             0.0 | 0.1 | 4               0.0 | 0.1 | 4
0.2 | 3             0.0 | 0.2 | 3                   |     |
0.7 | 5             1.0 | 0.7 | 5               1.0 | 0.7 | 5
1.5 | 1             2.0 | 1.5 | 1                   |     |
1.9 | 6             2.0 | 1.9 | …
Run Code Online (Sandbox Code Playgroud)

sql sqlite group-by ranking median

8
推荐指数
1
解决办法
2428
查看次数

T-SQL中的中值

对于偶数行,下表的中位数公式为(104.5 + 108)/ 2,对于奇数行,下表为108:

Total       Total

100         100
101         101
104.5       104.5
108         108
108.3       108.3
112         112
            114
Run Code Online (Sandbox Code Playgroud)

我写了这个查询,当行数为奇数时,它正在计算正确的中位数:

WITH    a AS ( SELECT   Total ,
                        ROW_NUMBER() OVER ( ORDER BY CAST(Total AS FLOAT) ASC ) rownumber
               FROM     [Table] A
             ),
        b AS ( SELECT TOP 2
                        Total ,
                        isodd
               FROM     ( SELECT TOP 50 PERCENT
                                    Total ,
                                    rownumber % 2 isodd
                          FROM      a
                          ORDER BY  CAST(Total AS FLOAT) ASC
                        ) a
               ORDER BY CAST(total AS FLOAT) DESC
             ) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

6
推荐指数
2
解决办法
1万
查看次数

计算 AWS Athena 表中每个组的中位数

以下是 athena 表的架构

在此输入图像描述

我希望通过 standard_lab_parameter_name 和单位计算“parameter_value”组的中位数。为此,我遵循了链接: https: //docs.aws.amazon.com/redshift/latest/dg/r_MEDIAN.html 但是在运行查询时

select median(parameter_value) from table_name group by standard_lab_parameter_name, units
Run Code Online (Sandbox Code Playgroud)

它抛出错误

 SYNTAX_ERROR: line 1:8: Function median not registered
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?或者如果有一些替代查询会很棒

sql group-by median amazon-web-services amazon-athena

5
推荐指数
1
解决办法
1万
查看次数

如何查找分组的SQL中位数

我正在使用SQL Server 2008

如果我有这样的表:

Code   Value
-----------------------
4      240
4      299
4      210
2      NULL
2      3
6      30
6      80
6      10
4      240
2      30
Run Code Online (Sandbox Code Playgroud)

如何通过Code列找到中位数AND组?要获得这样的结果集:

Code   Median
-----------------------
4      240
2      16.5
6      30
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢这个中位数的解决方案,但不幸的是它不包括Group By:https: //stackoverflow.com/a/2026609/106227

sql t-sql sql-server group-by median

2
推荐指数
1
解决办法
4964
查看次数

SQL Server:如何计算中位数(分组依据)?

可能重复:
在Sql Server中计算中值的函数

我有这样一张桌子:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[cars](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [sp] [int] NOT NULL,
    [dst] [int] NOT NULL,
    [type] [varchar](10) NULL,
 CONSTRAINT [PK_id] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[cars] ON
INSERT [dbo].[cars] ([id], [sp], [dst], [type]) VALUES …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server median sql-server-2008

1
推荐指数
1
解决办法
1万
查看次数