我有三个表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;