有个oracle语句:
SELECT employee_id, salary, hire_date, STDDEV(salary)
OVER (ORDER BY hire_date) "Std Deviation of Salary"
FROM employees WHERE job_id = 'ST_CLERK';执行结果如下:
EMPLOYEE_ID SALARY HIRE_DATE Std Deviation of Salary
----------- ---------- ---------- -----------------------
137 3600 14-7月 -95 0
141 3500 17-10月-95 70.7106781
133 3300 14-6月 -96 152.752523
142 3100 29-1月 -97 221.735578
131 2500 16-2月 -97 435.889894
125 3200 16-7月 -97 389.871774
129 3300 20-8月 -97 357.903951
138 3200 26-10月-97 331.393163
130 2800 30-10月-97 339.116499
139 2700 12-2月 -98 352.136337
143 2600 15-3月 -98 369.028208EMPLOYEE_ID SALARY HIRE_DATE Std Deviation of Salary
----------- ---------- ---------- -----------------------
140 2500 06-4月 -98 388.762606
144 2500 09-7月 -98 399.679359
134 2900 26-8月 -98 384.664832
126 2700 28-9月 -98 377.586319
127 2400 14-1月 -99 390.72582
132 2100 10-4月 -99 427.974023
135 2400 12-12月-99 430.116263
136 2200 06-2月 -00 443.800703
128 2200 08-3月 -00 453.379126我写了一个对应的mysql语句:
SELECT employee_id, salary, hire_date, STDDEV_pop(salary)
"Std Deviation of Salary"
FROM employees WHERE job_id = 'ST_CLERK'
Group by employee_id, salary, hire_date
ORDER BY hire_date;
执行结果如下:
+-------------+--------+------------+-------------------------+
| employee_id | salary | hire_date | Std Deviation of Salary |
+-------------+--------+------------+-------------------------+
| 137 | 3600 | 1995-07-14 | 0.0000 |
| 141 | 3500 | 1995-10-17 | 0.0000 |
| 133 | 3300 | 1996-06-14 | 0.0000 |
| 142 | 3100 | 1997-01-29 | 0.0000 |
| 131 | 2500 | 1997-02-16 | 0.0000 |
| 125 | 3200 | 1997-07-16 | 0.0000 |
| 129 | 3300 | 1997-08-20 | 0.0000 |
| 138 | 3200 | 1997-10-26 | 0.0000 |
| 130 | 2800 | 1997-10-30 | 0.0000 |
| 139 | 2700 | 1998-02-12 | 0.0000 |
| 143 | 2600 | 1998-03-15 | 0.0000 |
| 140 | 2500 | 1998-04-06 | 0.0000 |
| 144 | 2500 | 1998-07-09 | 0.0000 |
| 134 | 2900 | 1998-08-26 | 0.0000 |
| 126 | 2700 | 1998-09-28 | 0.0000 |
| 127 | 2400 | 1999-01-14 | 0.0000 |
| 132 | 2100 | 1999-04-10 | 0.0000 |
| 135 | 2400 | 1999-12-12 | 0.0000 |
| 136 | 2200 | 2000-02-06 | 0.0000 |
| 128 | 2200 | 2000-03-08 | 0.0000 |
+-------------+--------+------------+-------------------------+请问问题出在哪里?
SELECT employee_id, salary, hire_date, STDDEV(salary)
OVER (ORDER BY hire_date) "Std Deviation of Salary"
FROM employees WHERE job_id = 'ST_CLERK';执行结果如下:
EMPLOYEE_ID SALARY HIRE_DATE Std Deviation of Salary
----------- ---------- ---------- -----------------------
137 3600 14-7月 -95 0
141 3500 17-10月-95 70.7106781
133 3300 14-6月 -96 152.752523
142 3100 29-1月 -97 221.735578
131 2500 16-2月 -97 435.889894
125 3200 16-7月 -97 389.871774
129 3300 20-8月 -97 357.903951
138 3200 26-10月-97 331.393163
130 2800 30-10月-97 339.116499
139 2700 12-2月 -98 352.136337
143 2600 15-3月 -98 369.028208EMPLOYEE_ID SALARY HIRE_DATE Std Deviation of Salary
----------- ---------- ---------- -----------------------
140 2500 06-4月 -98 388.762606
144 2500 09-7月 -98 399.679359
134 2900 26-8月 -98 384.664832
126 2700 28-9月 -98 377.586319
127 2400 14-1月 -99 390.72582
132 2100 10-4月 -99 427.974023
135 2400 12-12月-99 430.116263
136 2200 06-2月 -00 443.800703
128 2200 08-3月 -00 453.379126我写了一个对应的mysql语句:
SELECT employee_id, salary, hire_date, STDDEV_pop(salary)
"Std Deviation of Salary"
FROM employees WHERE job_id = 'ST_CLERK'
Group by employee_id, salary, hire_date
ORDER BY hire_date;
执行结果如下:
+-------------+--------+------------+-------------------------+
| employee_id | salary | hire_date | Std Deviation of Salary |
+-------------+--------+------------+-------------------------+
| 137 | 3600 | 1995-07-14 | 0.0000 |
| 141 | 3500 | 1995-10-17 | 0.0000 |
| 133 | 3300 | 1996-06-14 | 0.0000 |
| 142 | 3100 | 1997-01-29 | 0.0000 |
| 131 | 2500 | 1997-02-16 | 0.0000 |
| 125 | 3200 | 1997-07-16 | 0.0000 |
| 129 | 3300 | 1997-08-20 | 0.0000 |
| 138 | 3200 | 1997-10-26 | 0.0000 |
| 130 | 2800 | 1997-10-30 | 0.0000 |
| 139 | 2700 | 1998-02-12 | 0.0000 |
| 143 | 2600 | 1998-03-15 | 0.0000 |
| 140 | 2500 | 1998-04-06 | 0.0000 |
| 144 | 2500 | 1998-07-09 | 0.0000 |
| 134 | 2900 | 1998-08-26 | 0.0000 |
| 126 | 2700 | 1998-09-28 | 0.0000 |
| 127 | 2400 | 1999-01-14 | 0.0000 |
| 132 | 2100 | 1999-04-10 | 0.0000 |
| 135 | 2400 | 1999-12-12 | 0.0000 |
| 136 | 2200 | 2000-02-06 | 0.0000 |
| 128 | 2200 | 2000-03-08 | 0.0000 |
+-------------+--------+------------+-------------------------+请问问题出在哪里?
不过说实话,我也不知道你这个功能要怎么在mysql实现,高手来续吧