2011-12-20 10 views
0

私は4列で1つのsalesのテーブルを持っている:MySQLのテーブル2の列の平均値が1つの列の平均値を下げる方法

id | item_id | department_id | bought_at | sold_at 

すべての列がINT(11)です。

のアイテムはいつでも購入できますが、1つの部門の中で最も速い販売の平均を知りたいと思います。商品ごとに、買った商品はすべて同じです。

どのように1つのクエリでこれを行うにはどうすればよいですか?

答えて

0

私は最も速い帆で、あなたはstored_atsold_atがほぼ等しいと仮定します。あなたは部門の項目ごとの最速セールスの平均数をしたい場合は、

たぶん
SELECT AVG(sales_count) average_sales FROM 
    (SELECT COUNT(*) AS sales_count 
      FROM sales 
      WHERE department_id = 1 AND (sold_at - stored_at) < 10 
      GROUP BY item_id 
    ) counts 
+0

私は混乱の用語を参照してください>>> stored_atはどこにデータベースに格納されていないことを意味します。 したがって、最も売れ行きが良いのは、sold_at - stored_at = xとXが最低の番号を意味します。 stored_at = sold_atの場合、アイテムは私たちがどこにいても販売されます。 – Glooh

+0

私はstored_atを買物で編集してより明確にしました。 – Glooh

+0

@Glooh答えを編集しました。 'sold_at = stored_at'の代わりに'(sold_at - stored_at) Jomoos

0

を(も10として販売差異のしきい値を仮定して、我々は平均が1で検索するdepartment_idいると仮定して)次のクエリを使用しますこの作品: -

select department_id, avg(sold_at-bought_at) as avg_time 
from sales 
group by department_id 
order by avg_time; 
+0

ORDER BYはGROUP BYの後に実行されませんか? – Glooh