2014-04-24 56 views
0

評分表MySQL的 - 在一個多星期


user_idx(INT)找到增加值

日期(日期時間)

分數(INT)


我需要從今天的日期可以看出總分超過一週後有所增加。我知道我需要兩個user_idx分組的相同用戶表,其中一個包含從過去到今天的總分,另一個包含從過去到一週前的總分。

之後,通過減去另一個會給我答案......但我努力編寫有效的SQL查詢。

我已經試過

SELECT BLAH BLAH 
FROM (SELECT user_idx, COUNT(*) as last_week_study_amount 
     FROM user_table 
     WHERE date <= date_sub(now(),INTERVAL 1 WEEK) 
     GROUP BY user_idx) 
AS a WHERE ..... 

你能幫助我:(?

+0

但意識到它不是一種方式來做到這一點。所以,如果可以使用JOIN語法和SELECT .. FROM .. WHERE ..格式來創建另一個相同的表格,我現在正在使用Google搜索。 – Raccoon

+0

如果這仍然不是一個合適的解決方案,我會開始檢查UNION – Raccoon

+0

http://stackoverflow.com/questions/17215615/subtract-two-rows-of-same-table-and-sum-the-difference我認爲這帖子給了我一些提示! – Raccoon

回答

0
SELECT (SUM(score) - last_week_score) AS increased_score, 
FROM user a 
JOIN (SELECT b.user_idx, COUNT(*) as last_week_score 
    FROM userb 
    WHERE date<= date_sub(now(),INTERVAL 1 WEEK) 
    GROUP BY b.user_idx) As c ON a.user_idx = c.user_idx 
WHERE DATE(date) <= DATE(NOW()) 
GROUP BY a.user_idx 

我結束了寫作克這個代碼,我認爲這一個工作正常...不知道這是最好的還是有一個嚴重的錯誤。我會更新它,如果它變得很糟糕...

0

讓我清楚你想獲得總計數在上週。

嘗試下面的查詢

SELECT * 
FROM (SELECT user_idx, COUNT(*) as last_week_study_amount 
     FROM user_table 
     WHERE date <= date_sub(now(),INTERVAL 1 WEEK) 
     GROUP BY user_idx) 
AS a WHERE ..... 
+0

毫米......不完全。我想在一週內找到更高的分數。換句話說,總分 - 總分直到上週。 – Raccoon

+0

okk然後我認爲你沒有任何問題你提供的sql.please只運行子查詢,並檢查你有沒有結果? –

+0

檢查我的編輯答案。 –

相關問題