2017-08-16 73 views
-1

如何计算每个代码每年的中位数。 下面是MySQL表:在mysql中计算的中位数

tbl_sales:

+-----+------+------+------+ 
| cod | cant | mont | year | 
+-----+------+------+------+ 
| 432 | 1 | 10 | 2012 | 
| 432 | 2 | 10 | 2012 | 
| 432 | 4 | 10 | 2012 | 
| 432 | 2 | 3 | 2012 | 
| 432 | 3 | 2 | 2016 | 
| 432 | 2 | 1 | 2016 | 
| 432 | 8 | 8 | 2017 | 
+-----+------+------+------+ 

手册中位数的计算:

+------+---+---+---+---+---+---+---+---+---+----+----+----+-------+ 
| year | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | TOTAL | 
+------+---+---+---+---+---+---+---+---+---+----+----+----+-------+ 
| 2012 | | | 2 | | | | | | | 7 | | | 9 | 
| 2016 | 2 | 3 | | | | | | | | | | | 5 | 
| 2017 | | | | | | | | 8 | | | | | 8 | 
+------+---+---+---+---+---+---+---+---+---+----+----+----+-------+ 

MEDIAN (5,8,9) = 8 

我如何在SQL这样显示: 432 => 8

谢谢!

+0

可能的重复https://stackoverflow.com/questions/5401158/calculating-the-median-with-mysql – MatSnow

回答

0

查询的核心是(显然):

SELECT year,SUM(cant) total FROM my_table GROUP BY year ORDER BY year; 

从这里,我会处理其余部分在应用程序代码。您可以在SQL中计算中位数,但是如果您已经拥有执行计算所需的所有信息(行数和中间行值),那么在数据库中没有进一步匹配在这里结果。

+0

不起作用,因为在列鳕鱼是不同的值 – ster

+0

实际上,鳕鱼始终是相同的价值,但在它发生变化的事件,你没有说明应该如何管理。这就是说,无论如何,这个解决办法是微不足道的。另外,让你多一点礼貌也可以让你受益。 – Strawberry