2013-01-23 98 views
1

我一直在試圖找出/搜索如何做到這一點,但失敗了。從mysql獲取最後30條記錄,但不是最後1條

我有ID作爲主鍵和自動增量和列答題器的表作爲成員點擊次數。我正在試圖做的是平均,除了最後的最後1

SELECT AVG(clickers) AS avgClickers FROM sitelogs_daily_stats ORDER BY id DESC LIMIT 30 

的最後30個記錄「表決器」的值,但是這個代碼包括最後一個記錄。我想跳過那一個。

任何幫助將是非常有幫助的。

+1

你能擴展你的問題嗎?或添加具有預期結果的樣本記錄等詳細信息? –

回答

1

把它包中的源查詢:在派生查詢

SELECT 
    AVG(clickers) as avgClickers 
FROM 
    (
     SELECT clickers 
     FROM sitelogs_daily_stats 
     ORDER BY id DESC 
     LIMIT 1,29 
    ) AS t1 

注意,我們選擇感興趣的記錄,然後在外部查詢它們平均。

+0

'SELECT AVG(ID)FROM table LIMIT 1'給出了和'SELECT AVG(ID)FROM table LIMIT 1000000'一樣的結果' – Peter

+0

@PeterSzymkowski是的,好的。請參閱修訂後的答案。 – gahooa

+0

@PeterSzymkowski - 性能問題是相當相對的。在任何不需要緩存的理性情況下,我懷疑這也是一個問題。 – gahooa

0
SELECT AVG(clickers) AS avgClickers 
FROM sitelogs_daily_stats 
WHERE id BETWEEN 
    (SELECT MAX(id) 
    FROM sitelogs_daily_stats) - 29 AND 
    (SELECT MAX(id) 
    FROM sitelogs_daily_stats) - 1 
相關問題