使用第一个平均值填充第二个表

时间:2013-09-10 19:38:46

标签: mysql sql transactions average

我有两张表,交易商品

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

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

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

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

2 个答案:

答案 0 :(得分: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的列用于平均值。

答案 1 :(得分:0)

使用INSERT... SELECT

平均

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

获得中位数是...... complicated