0

我正在尝试提取工资单数据,并且需要在 [PAYRATE] 列中添加最大值和最小值以得出平均费率。该表可以有多个具有相同工资率的工资单行,因此 AVG[PAYRATE] 将不起作用。我尝试了下面的代码,但失败了。这可以做到吗?

(SELECT SUM((MAX(payrate))+(MIN(payrate)))
FROM    PAYCHECKS
WHERE PAYROLCD in ('01', '02') 
AND PYRLRTYP = 1 
AND EMPLOYID = A.EMPLOYID 
AND PYADNMBR = A.PYADNMBR) AS PAYRATE

无法对包含聚合或子查询的表达式执行聚合函数。

4

2 回答 2

2

删除外部sum

SELECT (MAX(payrate)+MIN(payrate))/2 AS PAYRATE
FROM    PAYCHECKS
WHERE PAYROLCD in ('01', '02') 
AND PYRLRTYP = 1 
AND EMPLOYID = A.EMPLOYID 
AND PYADNMBR = A.PYADNMBR

我加了一个/2平均值。

于 2013-04-19T18:54:19.647 回答
0

您需要对最小值和最大值进行平均。此外,您需要除以小数 2 以获得准确的结果,否则如果仅除以 2,小数结果将被截断。您可以根据需要在下面更改比例和精度。

SELECT ((MIN(payrate)+MAX(payrate))/CAST(2 AS DECIMAL (9,2)) AS PAYRATE
FROM    PAYCHECKS
WHERE PAYROLCD in ('01', '02') 
AND PYRLRTYP = 1 
AND EMPLOYID = A.EMPLOYID 
AND PYADNMBR = A.PYADNMBR
于 2013-04-19T19:10:39.583 回答