2011-02-23 50 views
0

我有一個關於構建MySQL查詢的問題。我有一個包含值的列,另一列包含時間戳。我想要做的是從一個特定的時期到各個時間點獲得一個字段的不同(唯一)值的數量,以便我可以繪製隨時間變化的唯一值的數量。例如,我想查詢結果如下所示:
Date,COUNT(DISTINCT col1
2011-02-01,10
2011-02-02,16
2011-02-03 ,24
隨着時間的推移MySQL不同(唯一)值

請注意,這些值是開始相同時間點的不同值的數量。目前爲了實現這一點,我在PHP中使用循環來爲每個日期迭代單個查詢,並且由於我有一個大型數據庫,因此它需要永久使用。爲了給出更好的圖片,我想替換的低效代碼如下所示:

for($i=0;$i<count($dates),$i++){  
    $qry = "SELECT COUNT (DISTINCT `col1`) FROM `db`.`table` WHERE `Date` BETWEEN '".$EPOCH."' AND '".$dates[$i]."';";  
} 

任何幫助,將不勝感激。
感謝

+0

這是老了,但留給後人,這個答案應該工作: http://stackoverflow.com/questions/10995473/cumulative-monthly-totals-and-postgresql – kimbo305 2013-06-05 04:34:36

回答

0

如果將其理解你的問題,你可以使用GROUP聲明:

SELECT StampCol, COUNT(DISTINCT DataCol) FROM MyTable GROUP BY StampCol 
+0

您需要用該解決方案來確認PHP中的計數。 – Zulan 2011-02-23 17:10:10

+0

謝謝,但這個查詢會給每一天的計數(我也需要不同的值)。我正在查找COUNT包含所有'DataCol'值_up直到'StampCol'的日期的查詢。通過這種方式,我可以隨着時間的推移跟蹤唯一'DataCol'的增長,而不是每個給定'StampCol'唯一的'DataCol'。 – Tucker 2011-02-23 18:15:14

+0

是的,但是通過分組,只有一個日期組的唯一值在該日期組範圍內會被視爲唯一值,並且計數將會關閉 – Tucker 2011-02-23 19:01:05

0
SELECT DATE_FORMAT(date_column, "%Y-%m-%d") AS date_column, COUNT(visitors) AS visitors FROM table GROUP BY DATE_FORMAT(date_column, "%Y-%m-%d") ORDER BY date_column desc" 
+0

請參閱「如果您瞭解您的問題,則可以使用GROUP聲明:....「 – Tucker 2011-02-23 18:16:49

相關問題