求1个SQL语句

songjinxi123 2008-09-21 05:22:13
有下面这样的一个表,每1行是一个信件,我要对这个表进行搜索,把相同Content,相同Master和相同Stat的信件作为1批处理,并且要统计出每批有多少个信件,每批信件的发送时间(这个时间就在那批信件中随便取1个就行),还有每批信件的Cotent,Master,Stat。请问改如何写?



ID Content address Master Stat Time
1 明天来玩 上海 小明 1 2008-08-04 19:52:15.877
2 明天来玩 广州 小明 0 2008-08-04 19:52:16.877
3 下个星期来玩 广州 小明 1 2008-08-04 19:52:17.877
4 下个星期来玩 上海 小明 1 2008-08-04 19:52:18.877
5 今天吃鱼 上海 小红 1 2008-08-04 19:52:19.877
6 今天吃鱼 上海 小红 0 2008-08-04 19:52:22.877
7 今天吃鱼 广州 小红 1 2008-08-04 19:52:23.877
8 被老师惩罚了 广州 小红 1 2008-08-04 19:52:24.877

...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
songjinxi123 2008-09-21
  • 打赏
  • 举报
回复
谢谢2位了。
-晴天 2008-09-21
  • 打赏
  • 举报
回复
还要每批信息的stat?
在group by里再加上这个.
-晴天 2008-09-21
  • 打赏
  • 举报
回复
create table tb(ID int,Content nvarchar(12),address nvarchar(4),Master nvarchar(4),Stat int,Time datetime)
insert into tb
select 1,'明天来玩','上海','小明',1,'2008-08-04 19:52:15.877' union all
select 2,'明天来玩','广州','小明',0,'2008-08-04 19:52:16.877' union all
select 3,'下个星期来玩','广州','小明',1,'2008-08-04 19:52:17.877' union all
select 4,'下个星期来玩','上海','小明',1,'2008-08-04 19:52:18.877' union all
select 5,'今天吃鱼','上海','小红',1,'2008-08-04 19:52:19.877' union all
select 6,'今天吃鱼','上海','小红',0,'2008-08-04 19:52:22.877' union all
select 7,'今天吃鱼','广州','小红',1,'2008-08-04 19:52:23.877' union all
select 8,'被老师惩罚了','广州','小红',1,'2008-08-04 19:52:24.877'
go
select a.id,a.content,a.address,a.master,a.time,b.countrow from tb a inner join (
select min(id) as id,count(*) as countrow from tb group by content,master
)b on a.id=b.id
go
drop table tb
/*
id content address master time countrow
----------- ------------ ------- ------ ----------------------- -----------
1 明天来玩 上海 小明 2008-08-04 19:52:15.877 2
3 下个星期来玩 广州 小明 2008-08-04 19:52:17.877 2
5 今天吃鱼 上海 小红 2008-08-04 19:52:19.877 3
8 被老师惩罚了 广州 小红 2008-08-04 19:52:24.877 1

(4 行受影响)

*/
liangCK 2008-09-21
  • 打赏
  • 举报
回复
GROUP BY 就是分组..
用法..例子..打开SQLServer..按F1..自己查.
songjinxi123 2008-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
SQL codeSELECT
Content,
Master,
Stat,
COUNT(*) AS [次数]
FROM
tb_name
GROUP BY
Content,
Master,
Stat;
[/Quote]

能解释下GROUP BY 的用法和意思吗?网站的那些看不太懂,你就用我说的例子帮我解释下行吗?谢谢了
liangCK 2008-09-21
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-09-21
--> 生成测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (ID int,Content nvarchar(12),address nvarchar(4),Master nvarchar(4),Stat int,Time datetime)
insert into #T
select 1,'明天来玩','上海','小明',1,'2008-08-04 19:52:15.877' union all
select 2,'明天来玩','广州','小明',0,'2008-08-04 19:52:16.877' union all
select 3,'下个星期来玩','广州','小明',1,'2008-08-04 19:52:17.877' union all
select 4,'下个星期来玩','上海','小明',1,'2008-08-04 19:52:18.877' union all
select 5,'今天吃鱼','上海','小红',1,'2008-08-04 19:52:19.877' union all
select 6,'今天吃鱼','上海','小红',0,'2008-08-04 19:52:22.877' union all
select 7,'今天吃鱼','广州','小红',1,'2008-08-04 19:52:23.877' union all
select 8,'被老师惩罚了','广州','小红',1,'2008-08-04 19:52:24.877'

--SQL查询如下:

SELECT
Content,
Master,
Stat,
COUNT(*) AS [次数],
MIN(Time) AS [发送时间]
FROM
#T
GROUP BY
Content,
Master,
Stat;


/*
Content Master Stat 次数 发送时间
------------ ------ ----------- ----------- -----------------------
下个星期来玩 小明 1 2 2008-08-04 19:52:17.877
今天吃鱼 小红 0 1 2008-08-04 19:52:22.877
今天吃鱼 小红 1 2 2008-08-04 19:52:19.877
明天来玩 小明 0 1 2008-08-04 19:52:16.877
明天来玩 小明 1 1 2008-08-04 19:52:15.877
被老师惩罚了 小红 1 1 2008-08-04 19:52:24.877

(6 行受影响)

*/
liangCK 2008-09-21
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-09-21
--> 生成测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (ID int,Content nvarchar(12),address nvarchar(4),Master nvarchar(4),Stat int,Time datetime)
insert into #T
select 1,'明天来玩','上海','小明',1,'2008-08-04 19:52:15.877' union all
select 2,'明天来玩','广州','小明',0,'2008-08-04 19:52:16.877' union all
select 3,'下个星期来玩','广州','小明',1,'2008-08-04 19:52:17.877' union all
select 4,'下个星期来玩','上海','小明',1,'2008-08-04 19:52:18.877' union all
select 5,'今天吃鱼','上海','小红',1,'2008-08-04 19:52:19.877' union all
select 6,'今天吃鱼','上海','小红',0,'2008-08-04 19:52:22.877' union all
select 7,'今天吃鱼','广州','小红',1,'2008-08-04 19:52:23.877' union all
select 8,'被老师惩罚了','广州','小红',1,'2008-08-04 19:52:24.877'

--SQL查询如下:

SELECT
Content,
Master,
Stat,
COUNT(*) AS [次数]
FROM
#T
GROUP BY
Content,
Master,
Stat;


/*
Content Master Stat 次数
------------ ------ ----------- -----------
下个星期来玩 小明 1 2
今天吃鱼 小红 0 1
今天吃鱼 小红 1 2
明天来玩 小明 0 1
明天来玩 小明 1 1
被老师惩罚了 小红 1 1

(6 行受影响)


*/
liangCK 2008-09-21
  • 打赏
  • 举报
回复
SELECT 
Content,
Master,
Stat,
COUNT(*) AS [次数]
FROM
tb_name
GROUP BY
Content,
Master,
Stat;

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧