【发布时间】:2014-10-05 17:04:54
【问题描述】:
我用的是 MySQL,我的 SQL 表是这样的:
sales_year (INT), sales_month (INT), sales_day (INT), price (float), customer_type (TEXT)
我想知道哪个sql_query 会按季度汇总价格数据(计算每个季度的中位数价格,以及用于计算中位数的观察次数),并按客户类型分组。
我正在努力完成两个主要步骤: mySQL 似乎不支持中位数,以及如何按季度汇总数据 - 似乎按客户类型分组,一旦解决这两个问题就很容易了。
STRUGGLE - 计算中位数......
例如,我刚刚尝试创建四分之一列,它可以工作,但它计算的是 AVG 而不是中位数:
select avg(price) as avg_price, floor(sales_month/3.0+1) as
sales_quarter, count(*) as n_transactions, sales_year, customer_type
from mydb.mytable
group by sales_quarter, sales_year, customer_type;
此命令运行良好。但理想情况下,我可以通过 MEDIAN 更改 avg 但 mySQL 没有这样的支持,关于如何更改此代码以使其用于中值目的的任何建议?
注意:我还尝试从 site 中的用户定义函数安装我自己的中值函数,但 C 代码没有在我的 mac os X 上编译。
所以输出应该是这样的:
sales_quarter (INT)
sales_year (INT)
median_price (FLOAT)
number_users_used_to_compute_median (INT)
customer_type (TEXT)
【问题讨论】:
-
您的问题here 的中间部分有一些潜在的答案。接受的答案似乎已过时。其他一些可能值得一试。
-
@PatrickQ 我正在调查,谢谢!虽然看起来很复杂,特别是现在我已经有一个很长的代码......
-
浮动?当然是十进制,并考虑将日期存储为日期。另外,你的主键是什么?