簡體   English   中英

MySQL查詢以查找給定日期范圍內某個值的出現次數

[英]Mysql query to find number of occurrences of a value in a given date range

我有一個包含7,000,000行和兩列的表:一個名稱和一個時間戳。 其中的數據如下所示:

NAME  - TIMESTAMP
Arnie - 2012-05-15 09:31:21
Arnie - 2012-05-15 10:31:21
Jethro - 2012-05-15 12:31:21
Regina - 2012-05-15 12:31:21
Beatriz - 2012-05-16 0:31:21
Jethro - 2012-05-15 08:31:21
Jethro - 2012-06-15 08:31:21
Jethro - 2012-06-16 08:31:21
Archie - 2012-06-16 09:31:21
Jethro - 2012-06-17 08:31:21

對於自2012年1月以來的每個月,我想知道該名稱在該月出現了多少次,因此對於上面的示例,我希望:

June 2012

Arnie - 2
Jethro - 2
Regina - 1
Beatriz - 1

July 2012

Jethro - 3
Archie - 1

做這個的最好方式是什么? 另外,是否有一種方法可以將其作為一個按月對時間戳進行分組的查詢來運行,還是應該只在PHP中進行循環並每月運行一個單獨的查詢?

我知道這並不是超級困難,並且確實在文檔中進行了介紹,但是我對要搜索的術語感到困惑。

您可以使用GROUP BY並獲取計數,也可以使用MONTHNAME

SELECT Name, MONTHNAME(TIMESTAMP) AS Month, COUNT(*) AS count
FROM Table1
GROUP BY NAME, MONTHNAME(TIMESTAMP)

嘗試這個:

select date_format(timestamp, '%Y %M') as yyyymm, name, count(*)
from table t
group by date_format(timestamp, '%Y %M'), name
order by min(timestamp), name;

請注意,輸出格式與您建議的格式略有不同。 這會將年/月作為單獨的列添加到每一行。 此格式與關系結果集更加一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM