我有一个名为sales的表,其中包含以下字段:
id (integer)
quantity (integer)
product_id (integer)
payment_method (string - bad I know)
我想将这些记录挂钩到google visual api,但首先我需要以我想要的方式实际获取数据。谷歌可视化集成不是问题。问题是我似乎无法使用group()
函数或select()
函数来执行我想要的操作。
我不确定该组是否是我想要的,但基本上我想按payment_method
按每个产品进行销售总计。
我最初的想法是它看起来像
.select("SUM(quantity) as total_sold", :product_id).group(:payment_method)
但这并没有真正帮助我按产品排序。我希望数据看起来像是:
CASH SALES:
Product A: 103 sales
Product B: 32 sales
Product C: 87 sales
CREDITCARD SALES:
Product A: 23 sales
Product B: 43 sales
Product C: 12 sales
DONATION SALES:
Product A: # sales
Product B: 43 sales
Product C: 12 sales
任何帮助将不胜感激!
答案 0 :(得分:0)
.select("SUM(quantity) as total_sold", :product_id).group(:payment_method, :product_id)
首先,它将按付款方式对结果集进行分组,然后按产品ID进行分组。
答案 1 :(得分:0)
保持一个字符串中所有列的选择。生成的SQL将“按原样”使用。无需关闭字符串并将第二个参数作为符号:product_id
放入select中。
重要的是,也可以在select中添加group by中的所有列。
也请考虑.order("payment_method, product_id")
。
.select("SUM(quantity) as total_sold, payment_method, product_id").group(:payment_method, :product_id)
使用rails console进行测试:
Product.select("product_line_id, public_product_id pp_id, count(product_id) num_products") .group("product_line_id, public_product_id").map{|p| "Public Prod Id: #{p.pp_id} has #{p.num_products} products " }
产品负载(0.2ms)SELECT public_product_id pp_id,count(product_id)num_products FROM
products
GROUP BYproducts
。public_product_id
=> [ “Public Prod Id:5有1件商品”, “Public Prod Id:6有2个产品”, “Public Prod Id:8有1个产品”,......]