1

私が書くのに苦労している SQL クエリについて、誰かがこの質問に答えてくれることを願っています。おそらくかなり基本的なものですが、気が狂いそうになります。

電話システムにログインしている一部のエージェントに対して 15 分ごとに書き込まれるデータを含むテーブルがあります。これはいくつかのフィールド設定のサンプルです。他にもありますが、単純ですばやく入力できるようにしています。

FieldName          Size  Type
BeginTimePeriodDt  93    datetime
User_Id            12    varchar
EndTimePeriodDt    93    datetime
TotalLoginTime      4    int

そして、データが何であるかのサンプル。エージェントは他にもたくさんありますが、ここでもシンプルにしています。

BeginTimePeriodDT    User_ID EndTimePeriodDt      TotalLoginTime
2012-09-10 13:30:00  XXXXXX  2012-09-10 13:45:00  35
2012-09-10 13:30:00  YYYYYY  2012-09-10 13:45:00  900
2012-09-10 13:45:00  XXXXXX  2012-09-10 14:00:00  900
2012-09-10 13:45:00  YYYYYY  2012-09-10 14:00:00  600
2012-09-10 14:00:00  XXXXXX  2012-09-10 14:15:00  250
2012-09-10 14:00:00  YYYYYY  2012-09-10 14:15:00  95
2012-09-11 13:30:00  XXXXXX  2012-09-11 13:45:00  35
2012-09-11 13:30:00  YYYYYY  2012-09-11 13:45:00  900
2012-09-11 13:45:00  XXXXXX  2012-09-11 14:00:00  900
2012-09-11 13:45:00  YYYYYY  2012-09-11 14:00:00  600
2012-09-11 14:00:00  XXXXXX  2012-09-11 14:15:00  250
2012-09-11 14:00:00  YYYYYY  2012-09-11 14:15:00  95

ご覧のとおり、ログインしているすべてのエージェントは、15 分ごとに書き込まれたレコードを取得します。私がやろうとしているのは、それらのレコードを取得して、ログイン時間を合計することです。テーブルにエージェントごとに 1 日のレコードしか含まれていない場合は、非常に簡単に実行できますが...

テーブルには、エージェントごとに 15 分間隔で複数日分のレコードが含まれています :-(

私が少し苦労しているのは、1 日あたりのエージェント間隔をグループ化して追加し、1 日あたりの合計を返す方法を考え出すことです。

だから私は次のようなもので終わりたい

2012-09-10 XXXXXX 1185
2012-09-11 XXXXXX 1185
2012-09-10 YYYYYY 2000
2012-09-11 YYYYYY 1300

(私の数学が上記のデータに合わないことはわかっています。合計を計算するのに腹を立てることはできません:-P)

誰かが私に答えを思い付くことができれば、私は非常に感謝しています。

4

2 に答える 2

1
SELECT YEAR(BeginTimePeriodDT), 
       MONTH(BeginTimePeriodDT), 
       DAY(BeginTimePeriodDT), 
       User_ID, 
       SUM(TotalLoginTime)
FROM MyTable
GROUP BY YEAR(BeginTimePeriodDT), 
         MONTH(BeginTimePeriodDT), 
         DAY(BeginTimePeriodDT), 
         User_ID
于 2012-09-19T18:50:49.847 に答える
1

これはそれを行う必要があります

SELECT dateadd(dd,0, datediff(dd,0, beginTimePeriodDt)), UserId, SUM(TotalLoginTime)
FROM test 
group by dateadd(dd,0, datediff(dd,0, beginTimePeriodDt)), userId
order by 1, 2
于 2012-09-19T18:59:05.367 に答える