0

我有两个表,transactionsListings

交易列出了我每天发生的所有交易。我在交易中有一个列,列出了每个交易项目的价格。每天都会发生几笔交易。我想取每天所有交易的中位数或平均值,并在列表中使用此信息填充一个新列。

所以我的最终结果将在列表中有一个名为 daily_price_average 的列,它从transactions中获取单个交易信息的平均价格。

关于如何做到这一点的任何想法?

或者我怎么能使用视图来做到这一点?

4

2 回答 2

1

您可以在视图中执行此操作:

create v_listings as
    select l.*,
           (select avg(price) 
            from transactions t
            where date(t.transactiondate) = l.date
           ) as daily_price_average
    from listings l;

要进行更新,您首先要确定daily_price_average列表中有一个列:

update listings join
       (select date(t.transactiondate) as tdate, avg(price) as avgprice
        from transactions
        group by date(t.transactiondate)
       ) td
       on listings.date = td.tdate
    set daily_price_average = td.avgprice;

这两个都假设listings有一列要求date平均值。

于 2013-09-10T19:55:32.130 回答
0

利用INSERT... SELECT

对于平均

INSERT INTO averages (day, average)
  SELECT date, AVG(price)
  GROUP BY date

获得中位数是……复杂的。

于 2013-09-10T19:47:33.807 回答