2017-07-13 7 views
0

人。私はそこにあるどのように多くのテストをカウントするmysqlの集約行

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

ですべてのクエリを試すことができますか? – JRG

+1

01.01.2001 01:01:00は、カウントの定義を満たしているようです。 –

+1

あなたの英語は良くありません。「最新の結果」はどういう意味ですか? – Barmar

答えて

-2

以下は、毎日testの値を持つ最新のdate_time_stampです。 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データ型であることを前提としています。それ以外の場合は、DATETIME形式で取得するために2つの関数(REPLACE、STR_TO_DATE)を使用する必要があります。

Sample Data:それを処理したorderDatesとemployeeIdを持つ。デモの場合、同じ日に2つ以上の注文を処理したemployeeId = 4を選択します。ここでは時間がないので重複があり、MAXは重複の影響を受けません。重複があっても常に最大値を選択します。 。

enter image description here

Output of 1st Query:のみ社員= 4

enter image description here

Final Queryによって処理され、その日の最新の注文を取得する:社員= 4によって処理された注文の合計数を、ためにのみ最新の順序を選びます毎日。

enter image description here

あなたはその日に最新である毎日のためのすべての日、すなわち単一 `test`の最新` test`の合計数を取得したいので、https://www.w3schools.com/sql/trysql.asp?filename=trysql_op_in

+1

集計している同じ列でグループ化することは意味がありません。これは 'GROUP BY value'でなければなりません。 – Barmar

+0

私が理解する限り、彼は値として 'test'だけの行を必要とし、彼は最新のシーケンスしか必要としません。 「いくつのテストがあるのか​​を数えたいが、最新の結果のみを数えたい」上記のクエリ結果は、とにかく 'test'値を持つ行の総数を与えます。 – JRG

+1

'GROUP BY col'では' MAX(col) 'を使うのは意味がありません。グループ内のすべての値は同じ値なので、最大値はその値です。 – Barmar