3

エージェントとのセッションのテーブル、セッションの開始時間、およびエージェントが支援した人の数があります。その日のすべてのセッションを組み合わせて、各エージェント/日付の組み合わせの合計を表示するクエリを実行したいと思います。たとえば、私は持っています:

Agent 1 - 1/8/13 11:30am - 8
Agent 2 - 1/8/13 11:32am - 9
Agent 1 - 1/8/13 12:45pm - 10
Agent 2 - 1/9/13 10:20am - 8
Agent 3 - 1/9/13 11:45am - 7

そして、私が見たいのは:

1/8/13 - Agent 1 - 18
1/8/13 - Agent 2 - 9
1/9/13 - Agent 2 - 8
1/9/13 - Agent 3 - 7

私が試したのは:

SELECT DISTINCT CONVERT(CHAR(10), StartTime, 101) as 'Day',
       Agent,
       Helped
FROM Sessions

しかし、DISTINCT は選択されたすべての列に対して一意の結果を返すことを理解したので、日ごとに結合されたのではなく、元のデータのみが表示されます。これに関するヘルプは大歓迎です、ありがとう!

4

4 に答える 4

3

ここで必要なのは、日ごとにグループ化された集計SUM()Agentです。

SELECT CONVERT(CHAR(10), StartTime, 101) as 'Day',
       Agent,
       SUM(Helped) AS Helped
FROM Sessions
GROUP BY CONVERT(CHAR(10), StartTime, 101),
         Agent

DaySQL Server でエイリアスを使用できるかどうか思い出せませんGROUP BY。もしそうなら、あなたはすることができます

SELECT CONVERT(CHAR(10), StartTime, 101) as 'Day',
       Agent,
       SUM(Helped) AS Helped
FROM Sessions
GROUP BY Day, Agent, 
于 2013-01-11T21:11:12.660 に答える
2

あなたGROUP BYはStartTimeとエージェントにそしてSUMHelpedをアップする必要があります:

declare @Sessions table
(
    StartTime datetime,
    Agent varchar(50),
    Helped int
)

insert into @Sessions (Agent, StartTime, Helped)
select 'Agent 1', '1/8/13 11:30am', 8
union select 'Agent 2', '1/8/13 11:32am', 9
union select 'Agent 1', '1/8/13 12:45pm', 10
union select 'Agent 2', '1/9/13 10:20am', 8
union select 'Agent 3', '1/9/13 11:45am', 7

select
    convert(varchar(10), StartTime, 101) as [Day],
    Agent,
    sum(Helped)
from
    @sessions
group by
    convert(varchar(10), StartTime, 101),
    Agent
于 2013-01-11T21:15:30.267 に答える
0

あまりにも単純すぎるのではないかと思っていました...しかし、あなたが必要とする答えのようです..

クエリ:

SELECT date as times,
       id,
       sum(items)
FROM agents
group by id, date
;

結果:

|      TIMES |      ID | COLUMN_2 |
-----------------------------------
| 2013-01-08 | Agent 1 |       18 |
| 2013-01-08 | Agent 2 |        9 |
| 2013-01-09 | Agent 2 |        8 |
| 2013-01-09 | Agent 3 |        7 |
于 2013-01-11T21:20:28.430 に答える
-1

「group by」コマンドを探索したいと思うでしょう-次のようなものです:

SELECT CONVERT(CHAR(10), StartTime, 101) as 'Day',
   Agent,
   Helped
FROM Sessions GROUP BY (Agent) order by Agent asc
于 2013-01-11T21:11:40.027 に答える