2017-07-13 110 views
0

guys。我有一個表,如:mysql count consiquence rows

date_time_stamp   | value 
________________________ 
01.01.2001 01:01:00  | test 
02.01.2001 01:01:00  | foo 
02.01.2001 01:01:00  | test 
03.01.2001 01:01:00  | foo 
04.01.2001 01:01:10  | test 
04.01.2001 01:01:00  | test 
05.01.2001 01:01:00  | test 

我想看看有多少測試存在,但只計算最新的結果,

但只計算

04.01.2001 01:01:10 | test 

05.01.2001 01:01:00 | test 

,因爲它們是最新的結果,並且迄今爲止沒有公開。如果有重複 - 你只需要計算最新的一個。有沒有辦法做到這一點?或者可能有另一種解決方案?還想補充說,這個值是一個集合。

+0

所以你想獲得最新的'test'的總數爲所有天即單'test'每天這是最新的在這一天的查詢? – JRG

+1

01.01.2001 01:01:00似乎會符合您的計數定義。 –

+1

你的英語不好,「最新後果」是什麼意思? – Barmar

回答

-2

下面會給你最新的date_time_stamp,其中每天有test值。 MAX()是一個聚合函數,可與日期和時間一起使用。

SELECT MAX(date_time_stamp), value from TABLE_NAME 
WHERE value = 'test' 
GROUP BY date_time_stamp 
ORDER BY date_time_stamp 

輸出將類型...

MAX(date_time_stamp) | value 
_______________________________ 
01.01.2001 01:01:00  | test 
02.01.2001 01:01:00  | test 
04.01.2001 01:01:10  | test 
05.01.2001 01:01:00  | test 

如果你只是想test計數,僅採摘最新結果的每一天,然後下面應該幫助...

SELECT COUNT(*) 
FROM (SELECT MAX(date_time_stamp) from TABLE_NAME 
     WHERE value = 'test' 
     GROUP BY date_time_stamp) 

輸出將是類型...

COUNT(*) 
________ 
4 

NOTE:上面的工作假設列date_time_stamp是DATETIME數據類型,否則您將不得不使用幾個函數(REPLACE,STR_TO_DATE)以DATETIME格式獲取它。

Sample Data:有orderDates和employeeId誰處理它。對於演示,我們將挑選當天處理超過1個訂單的employeeId = 4,因爲這裏沒有時間,所以會有重複,MAX不會受到重複的影響,因爲即使重複,它也會始終選擇最大值。

enter image description here

Output of 1st Query:只有獲得最新的訂單當天,由僱員處理= 4

enter image description here

Final Query:由僱員= 4處理的訂單總數,挑選只最新訂單每天。

enter image description here

您可以嘗試所有在https://www.w3schools.com/sql/trysql.asp?filename=trysql_op_in

+1

按照您正在彙總的同一列進行分組毫無意義。它應該是「GROUP BY值」。 – Barmar

+0

據我瞭解,他需要只有'test'作爲值的行,他只需要最新的序列。 '我想統計有多少測試,但只計算最新的結果。上面的查詢結果反正會給出具有'test'值的行的總數。 – JRG

+1

將'MAX(col)'與'GROUP BY col'一起使用仍然沒有意義。組中的所有值都具有相同的值,因此最大值就是該值。 – Barmar