2011-10-24 55 views
0

我有一個名爲銷售表,該表具有以下字段:滑軌由求和選擇和組自定義的SQL調用

id (integer) 
quantity (integer) 
product_id (integer) 
payment_method (string - bad I know) 

我要掛鉤這些記錄到谷歌的可視化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
.select("SUM(quantity) as total_sold", :product_id).group(:payment_method, :product_id) 

首先,它將按付款方式對產品組進行分組,然後按產品ID進行分組。

+0

我不斷收到錯誤:「參數錯誤:

.select("SUM(quantity) as total_sold, payment_method, product_id").group(:payment_method, :product_id) 

使用Rails控制檯進行測試。錯誤的參數個數(2 1)從query_methods.rb有什麼想法 – jyanks

+0

我認爲我們不能傳遞select方法的兩個參數,所以請把它作爲.select(「SUM(quantity)totla_sold,product_id」) – nkm

+0

仍然沒有骰子將它們全部傳入一個字符串中,我試着用product_id和:product_id。數量和數量一樣的東西 – jyanks

0

保持一個字符串內所有列的選擇。生成的SQL將使用「按原樣」。無需關閉字符串,並將第二個參數作爲符號:product_id選中。 重要的是在select中添加group by的所有列。 也考慮.order("payment_method, product_id")

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 " } 

Product Load (0.2ms) SELECT public_product_id pp_id, count(product_id) num_products FROM products GROUP BY products . public_product_id => [ "Public Prod Id: 5 has 1 products ", "Public Prod Id: 6 has 2 products ", "Public Prod Id: 8 has 1 products ", ... ]