我有三個表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;
我還需要平均每單位價格由公司和週數分組。 (我需要這是一個逗號分隔的方式,這樣我可以把它傳遞給谷歌圖表API。由於SQLite的一個GROUP_CONCAT
內一個不能使用SUM
,我不得不用這個的fugly聯視圖。)
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方式獲取這些數據嗎?
我試過儘可能詳細。如果有的話,我對此表示歉意。
謝謝
找到了一種方法來加入這兩個查詢。
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;