2014-02-14 78 views
0

在Rails中,我想在頁面上顯示每個「日」創建了多少新的「用戶」。如何針對Postgres運行任意SQL

在常規的SQL,我會做這樣的事情:

SELECT 
DATE(created_at) as day, 
COUNT(1) as new_user_count 
FROM users 
WHERE created_at > '2014-01-01 01:01:01' 
GROUP BY day 

我怎樣才能在Rails的執行這個對我的Users表?再次,我需要在一個頁面上顯示,所以我沒有在PG GUI上尋找指示。

具體而言,我使用Heroku和Postgres。

回答

1

做這樣的:

sql = "SELECT DATE(created_at) as day, COUNT(1) as new_user_count " \ 
     "FROM users WHERE created_at > '2014-01-01 01:01:01' " \ 
     "GROUP BY day" 

ActiveRecord::Base.connection.execute(sql) 
+0

你忘了在最後關閉字符串嗎? * QUERY >> –

+0

@DonnyP Nope。請參閱http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html – Agis

+0

PG ::錯誤:錯誤:在「用戶」處或附近出現語法錯誤 - 看起來我們需要空格每行後也:) –

0

除了原始的SQL解決方案,您可以考慮創建一個視圖:

create view daily_user_counts as 
SELECT 
    DATE(created_at) as day, 
    COUNT(*) as new_user_count 
FROM users 
WHERE created_at > '2014-01-01 01:01:01' 
GROUP BY day; 

...併爲它建立一個只讀的模式:

class DailyUserCount < ActiveRecord::Base 

    def readonly? 
    true 
    end 

end 

然後:

DailyUserCount.where("day > ? ", from).order(:day) 
相關問題