私は3つのテーブルLot
,Sale
およびCompany
を持っています。私は下にdigramを付けました。Railsからのデータ照会に関するヘルプ
私は、これらの表から、10項目の結果セットを取得する必要があります。私は次のフィールドを探しています - company_name、平均数量、最高価格、最低価格 平均価格、売上数。私は次のようにそれらを照会することができました:
SELECT company_id
, AVG(quantity)
, MAX(price)
, MIN(price)
, AVG(price)
, COUNT(sale_id)
FROM lots
GROUP
BY company_id
ORDER
BY AVG(quantity) ASC
LIMIT 10;
私はまた、会社と週番号をグループ化した平均単価が必要でした。 (私はGoogleのチャートAPIに渡すことができるように、私は、カンマ区切りの方法としてこれを必要とする。SQLiteの中GROUP_CONCAT
内側に1つのカント使用SUM
ので、私はこの非常に醜いインラインビューを使用する必要がありました。)
SELECT company_id
, GROUP_CONCAT(price_per_unit)
FROM (
SELECT company_id
, sales.week
, SUM(price * quantity)/SUM(quantity) AS price_per_unit
FROM lots
JOIN sales
ON lots.sale_id = sales.id
GROUP
BY company_id
, sales.week
ORDER
BY company_id ASC
, sales.week ASC
)
GROUP
BY company_id;
SQLのバックグラウンドから来て、データをフェッチするためにORMモデルを使用するのはちょっと難しいです。誰かが私にこのデータをRails ORMの方法でどのようにフェッチできるかを教えてもらえますか?
私は可能な限り冗長にしようとしました。私の不作為に対する謝罪。
ありがとう
2つのクエリを結合する方法が見つかりました。
SELECT lots.company_id
, AVG(quantity)
, MAX(price)
, MIN(price)
, AVG(price)
, COUNT(sale_id)
, x.price_per_unit
FROM lots
JOIN
(
SELECT company_id
, GROUP_CONCAT(price_per_unit) AS price_per_unit
FROM (
SELECT company_id
, sales.week
, SUM(price * quantity)/SUM(quantity) AS price_per_unit
FROM lots
JOIN sales
ON lots.sale_id = sales.id
GROUP
BY company_id
, sales.week
ORDER
BY sales.week ASC
)
GROUP
BY company_id
) x
ON lots.company_id = x.company_id
GROUP
BY lots.company_id
ORDER
BY AVG(quantity) ASC
LIMIT 10;