2016-09-02 52 views
-1

[請忽略...問題解決了!不應該被要求...] 我想在過去的24小時內對我的新用戶進行計數;我想通過列出用戶來驗證計數 - 但我得到了兩個不同的結果,應該是相同的查詢。爲什麼COUNT(*)返回的數字與SELECT相同?

在搜索答案並找不到答案後,我無法解釋爲什麼這兩個不同的SQL查詢返回不同的數字,當它們應該是等價的。

它們都是連接到相同Postgres數據庫的Ruby腳本。

第一個查詢計數:

cu = con.exec "SELECT count(*) AS user_count 
    FROM Users u 
    LEFT OUTER JOIN Personal_profiles p ON p.user_id = u.id 
    WHERE u.updated_at >= TIMESTAMP 'YESTERDAY 23:00:00' - INTERVAL '1 day' 
    AND u.updated_at < TIMESTAMP 'YESTERDAY 23:00:00' 
    AND u.approved_for_transfer" 

    user_count = cu.getvalue(0,0) 
    puts "Count of Users created in past 24 hrs:", user_count 

它返回的138 ​​

下一個查詢計數是相似記錄的列表:

ru = con.exec "SELECT u.id,u.email, u.created_at::DATE, p.first_name,p.last_name 
    FROM Users u 
    LEFT OUTER JOIN Personal_profiles p ON p.user_id = u.id 
    WHERE u.created_at >= TIMESTAMP 'YESTERDAY 23:00:00' - INTERVAL '1 day' 
    AND u.created_at < TIMESTAMP 'YESTERDAY 23:00:00' 
    AND u.approved_for_transfer 
    ORDER BY u.created_at DESC" 

    puts "Users created in last 24 hr period (reverse chronological order):" 

    puts "user.id email created_at first_name last_name" 
    puts "------- ----- ---------- ---------- ----------" 
    ru.each do |row| 
    puts "%s %s %s %s %s" % [ row['id'], row['email'], row['created_at'], row['first_name'], row['last_name'] ] 

但此查詢返回53行,這是51條記錄(因爲前兩行是標題)。

我相信我在兩種情況下都有相同的連接和過濾器,但如果有人能解釋爲什麼查詢返回不同的結果,那將非常感激。

+8

第一個查詢過濾器上'updated_at'另一個在'created_at' –

+0

的@ClodoaldoNeto作出這樣的回答 – Hogan

回答

6

updated_at第一查詢過濾器和其他的created_at

+0

你說得對......愚蠢的問題! –

相關問題