使用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.
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) 对于偶数行,下表的中位数公式为(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) 以下是 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 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 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 ×6
median ×5
group-by ×3
t-sql ×3
sql-server ×2
mysql ×1
ranking ×1
sqlite ×1
statistics ×1