Php 在MySQL中计算z值
我有一个表,Php 在MySQL中计算z值,php,mysql,sql,Php,Mysql,Sql,我有一个表,gainfinal,它由三列组成:countrycode、year和value 我想计算所有行的z值。 我做了这样一个简单的查询 SELECT ( `values` - STDDEV( `values` ) ) / AVG( `values` ) AS zvalue FROM `gainfinal` 但是查询只返回一行。如何对所有行执行相同的操作?您需要一个子查询来获取聚合值: SELECT (gf.`values` - stats.average) / stats.s A
gainfinal
,它由三列组成:countrycode
、year
和value
我想计算所有行的z值。
我做了这样一个简单的查询
SELECT (
`values` - STDDEV( `values` )
) / AVG( `values` ) AS zvalue
FROM `gainfinal`
但是查询只返回一行。如何对所有行执行相同的操作?您需要一个子查询来获取聚合值:
SELECT (gf.`values` - stats.average) / stats.s AS zvalue
FROM `gainfinal` gf cross join
(select sttdev(values) as s, avg(values) as average from gainfinal) stats;
在大多数数据库中,原始查询会生成错误,因为它在没有分组依据的查询中混合了聚合列和非聚合列。解决方案是一个单独的子查询来进行计算。这个怎么样
DECLARE @stdev AS FLOAT, @avg AS FLOAT
SELECT @stdev = STDEV([values]), @avg = AVG([values])
FROM gainfinal
SELECT
countrycode
, year
, [values]
, ([values] - @stdev) / @avg AS zvalue
FROM gainfinal
您试图计算Z值的目的是什么?唯一的国家代码、年份或其他什么?它适用于所有值。您的z分数公式不正确。减去平均值,再除以标准差。@Gordon Linoff。谢谢你的回答。但令人惊讶的是,它对我不起作用。上面写着:错误#1064@ShivaBhusal . . . 它应该会起作用,尤其是现在我为z-score.Yaa输入了正确的公式。我检查了公式并改正了它。但它仍然不起作用。这似乎很有趣,但也不起作用D