メッセージ送信用の Web アプリケーションを開発しています。次の列があります: TO,MSG,DATE,FROM
. 基準日の最大メッセージ送信者をカウントしたい。では、ここで SQL クエリは何であるべきでしょうか?
2 に答える
0
これを試してみてください。これがあなたの期待どおりであることを願っています。
DECLARE @Temp AS TABLE ([TO] varchar(20),MSG varchar(50),[Date] DATETIME,[From] varchar(50))
INSERT INTO @Temp VALUES
('Person1','Msg',GETDATE(),'Sender1'),
('Person2','Msg',GETDATE(),'Sender1'),
('Person2','Msg',GETDATE()-1,'Sender1'),
('Person3','Msg',GETDATE(),'Sender1'),
('Person4','Msg',GETDATE()-1,'Sender1'),
('Person5','Msg',GETDATE()-2,'Sender1'),
('Person6','Msg',GETDATE(),'Sender1'),
('Person3','Msg',GETDATE()-1,'Sender1'),
('Person2','Msg',GETDATE(),'Sender1'),
('Person1','Msg',GETDATE(),'Sender2'),
('Person2','Msg',GETDATE(),'Sender2'),
('Person2','Msg',GETDATE()-1,'Sender2'),
('Person3','Msg',GETDATE(),'Sender3'),
('Person4','Msg',GETDATE()-1,'Sender3'),
('Person5','Msg',GETDATE()-2,'Sender3'),
('Person6','Msg',GETDATE(),'Sender3'),
('Person3','Msg',GETDATE()-5,'Sender2'),
('Person2','Msg',GETDATE()-4,'Sender2')
SELECT
[Date]
,[SentCount]
,[From]
FROM
select
RANK() OVER(PARTITION BY CONVERT(varchar(10),[DATE],103) ORDER BY COUNT([From]) DESC) AS [RANK],
[From],
COUNT([From]) AS [SentCount],
CONVERT(varchar(10),[DATE],103) AS [Date]
FROM
@Temp
GROUP BY [From],CONVERT(varchar(10),[DATE],103)
) A
WHERE
[Rank]=1
于 2013-05-23T08:47:28.650 に答える