我似乎无法弄清楚如何使用Rails Active Record Query Interface编写以下简单的SQL。
SELECT *
FROM product_sales
WHERE (product_location_id, net_sale)
IN
(
SELECT product_location_id, MAX(net_sale)
FROM product_sales
GROUP BY product_location_id
)
AND (sale_date BETWEEN '2016-05-01' AND '2016-05-31');
注意:我已查看以下链接。但是,它只在外部WHERE子句中指定一个列,而我需要两个。
感谢您的帮助。
更新
模型
[ProductSale]
references :product_location, index: true, foreign_key: true
decimal :net_sale, precision: 16, scale: 6
date :sale_date
[产品展示您]
references :product, index: true, foreign_key: true
etc...
关系
ProductSale -> belongs_to :product_location
ProductLocation -> has_many: product_sales
请注意我的数据库是MySQL 。
答案 0 :(得分:1)
我有另一种建议,请尝试
对于Postgresql
(1-$A2)*(2-$A2)*(3-$A2)*($A2+B$1)/6 - $A2*(1-$A2)*(3-$A2)*($A2+B$1)/2 + $A2*(1-$A2)*(2-$A2)*($A2-B$1)/6 + $A2*(2-$A2)*(3-$A2)*($A2-B$1)/2 - B$1*(1-B$1)*(3-B$1)*$A2*(3-$A2)*(6-4*$A2)/2 + B$1*(1-B$1)*(2-B$1)*$A2*($A2-3)*(6-4*$A2)/6
使用DISTINCT ON在ProductSale
.select("DISTINCT ON (product_sales.product_location_id), product_sales.*")
.where("product_sales.sale_date BETWEEN '2016-05-01' AND '2016-05-31'")
.order("product_sales.product_location_id, product_sales.net_sale DESC")
排序product_location_id
上从高到低选择uniq行
对于MySQL
net_sale
答案 1 :(得分:0)
嗯,查询的第一部分如下,只需使用简单的一对多关系查询,然后为请求加入x <- insert(cls[[1]], ats=c(4), values="K2")
条件:
and