2

重複の可能性:
SQLクエリGroup By Datetimeの問題?

私は2つのステップでアプリケーションに取り組んでいます。

  • ログをスキャンし、ログからのデータをデータベースに保持します。
  • データベースからデータを読み取り、データを視覚化します。

最初のステップは多かれ少なかれ終了しています。私は2番目のステップで背景と私の必要条件を説明しようとします。

データベースの各行は、logdate、logfilename、LogType、logMessageなどの情報で構成されています。たとえば、特定のLogTypeを1日あたりに要約するSQLを記述します。

これは列です:

[LogDate] [datetime] NOT NULL,
[Computer] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[LineNo] [int] NOT NULL,
[UserName] [varchar](50) NOT NULL,
[Message] [varchar](max) NOT NULL,

Type = TDBErrorのすべての行を表示したい場合、出力は次のようになると思います。

Date        Sum
2012-10-01  3
2012-10-02  12
2012-10-03  40
2012-10-05  24
2012-10-06  18

したがって、日付2012-10-01では、DBにType=TDBErrorの3行がありました。日付2012-10-02では12などがありました。

このためのSQLをどのように書くべきですか?

4

4 に答える 4

1
Select Cast(FLOOR(CAST(DATE as float)) as DateTime) as Date,COUNT(*) as [SUM]
from Log_Table_Name
Group by Cast(FLOOR(CAST(DATE as float)) as DateTime)
order by Cast(FLOOR(CAST(DATE as float)) as DateTime)  
于 2013-01-16T20:33:43.567 に答える
1

GROUP BY DATEPART(日、日付)、DATEPART(月、日付)、DATEPART(年、日付)

于 2013-01-16T20:28:57.427 に答える
1

SQL Server 2008以降を想定:

SELECT 
  [Date] = CONVERT(DATE, LogDate), 
  [Sum] = COUNT(*)
FROM dbo.Log_Table_Name
WHERE [Type] = 'DBError'
GROUP BY CONVERT(DATE, LogDate)
ORDER BY [Date];
于 2013-01-16T20:29:49.220 に答える
1

時間の一部でグループ化できます

GROUP BY date(log_date), month(log_date), day(log_date)
于 2013-01-16T20:30:48.047 に答える