SQL统计语句

星际 2009-12-14 03:26:05
数据库中记录是这样的:

地区 评价内容 好评(Y)
江苏 。。 Y

江苏 。。 N

江苏 。。 Y

山东 。。 N

山东 。。 N

山东 。。 Y

山东 。。 N

我想获得的结果如下:

地区 评价次数 好评次数
江苏 3 2
江苏 4 1

请问如何写?谢谢


...全文
57 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-12-14
  • 打赏
  • 举报
回复
create table [tb]([地区] varchar(4),[评价内容] varchar(2),[好评] varchar(1))
insert [tb]
select '江苏','..','Y' union all
select '江苏','..','N' union all
select '江苏','..','Y' union all
select '山东','..','N' union all
select '山东','..','N' union all
select '山东','..','Y' union all
select '山东','..','N'
go

select 地区,
count(1) [评价次数],
sum(case 好评 when 'Y' then 1 else 0 end) [好评次数]
from tb
group by 地区

drop table tb

/*
地区 评价次数 好评次数
---- ----------- -----------
江苏 3 2
山东 4 1

(所影响的行数为 2 行)

*/
星际 2009-12-14
  • 打赏
  • 举报
回复
太感激了
dawugui 2009-12-14
  • 打赏
  • 举报
回复
select 地区,
count(1) [评价次数],
sum(case 好评 when 'Y' then 1 else 0 end) [好评次数]
from tb
group by 地区
vipper23 2009-12-14
  • 打赏
  • 举报
回复
select
地区,
count(1) as 评价次数,
count(1) as 好评次数
from
tb where 好评(Y) ='Y'

group by
地区
--小F-- 2009-12-14
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(我是小F,向高手学习)
-- Date :2009-12-14 15:29:29
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([地区] varchar(4),[评价内容] varchar(2),[好评] varchar(1))
insert [tb]
select '江苏','..','Y' union all
select '江苏','..','N' union all
select '江苏','..','Y' union all
select '山东','..','N' union all
select '山东','..','N' union all
select '山东','..','Y' union all
select '山东','..','N'
--------------开始查询--------------------------
select
地区,
count(1) as 评价次数,
sum(case 好评 when 'Y' then 1 else 0 end) as 好评次数
from
tb
group by
地区
----------------结果----------------------------
/* 地区 评价次数 好评次数
---- ----------- -----------
江苏 3 2
山东 4 1

(2 行受影响)

*/
快乐_石头 2009-12-14
  • 打赏
  • 举报
回复
select 地区, 
count(*)评价次数,
sum(case when 好评='Y' then 1 else 0 end)好评次数
from tb group by 地区
jinjazzli 2009-12-14
  • 打赏
  • 举报
回复
---------------------------------------------
--> Author : jinjazzli
--> Target : ---->1000
--> Date : 2009-12-14 15:27:27
--> Version: SQL Server 2005
---------------------------------------------

--> 测试数据: @tb
declare @tb table (地区 varchar(4),评价内容 varchar(2),好评 varchar(1))
insert into @tb
select '江苏','..','Y' union all
select '江苏','..','N' union all
select '江苏','..','Y' union all
select '山东','..','N' union all
select '山东','..','N' union all
select '山东','..','Y' union all
select '山东','..','N'


select
地区,
评价次数=count(*),
好评次数=sum(case when 好评='Y' then 1 else 0 end)
from @tb
group by 地区

(7 行受影响)
地区 评价次数 好评次数
---- ----------- -----------
江苏 3 2
山东 4 1

(2 行受影响)
--小F-- 2009-12-14
  • 打赏
  • 举报
回复
select
地区,
count(1) as 评价次数,
sum(case 好评 when 'Y' then 1 else 0 end) as 好评次数
from
tb
group by
地区

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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