首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

统计sql如何写

2013-01-02 
统计sql怎么写 表table怎么实现下面统计将很好和较好合并统计,很差和较差合并统计 VoteValueStr ct否3好8-

统计sql怎么写
 表table
统计sql如何写
怎么实现下面统计  将很好和较好合并统计,很差和较差合并统计
 VoteValueStr ct
  否            3
  好            8  --这里是很好+较好   
 一般           2
  差            2  --这里是很差+较差 
[解决办法]
select (case when right(votevaluestr,1) in('好','差') then right(votevaluestr,1) else votevaluestr end)as votevaluestr,sum(ct)
from tb
group by (case when right(votevaluestr,1) in('好','差') then right(votevaluestr,1) else votevaluestr end)
[解决办法]
create table tb(votevaluestr nvarchar(10),ct int)
insert into tb select '否',3
insert into tb select '很差',1
insert into tb select '很好',1
insert into tb select '较差',1
insert into tb select '较好',7
insert into tb select '一般',2
go
select (case when right(votevaluestr,1) in('好','差') then right(votevaluestr,1) else votevaluestr end)as votevaluestr,sum(ct)ct
from tb
group by (case when right(votevaluestr,1) in('好','差') then right(votevaluestr,1) else votevaluestr end)
/*
votevaluestr ct
------------ -----------
差            2
否            3
好            8
一般           2

(4 行受影响)
*/
go
drop table tb
[解决办法]
select sum(ct) from table where VoteValueStr="较好" or  VoteValueStr="很好"
select sum(ct) from table where VoteValueStr="较差" or  VoteValueStr="很差"
[解决办法]



--创建测试表
create table kb(votevaluestr nvarchar(10),ct int)
--插入数据
insert into kb 
select N'否',3
union all
select N'很差',1
union all
select N'很好',1
union all
select N'较差',1
union all
select N'较好',7
union all
select N'一般',2


select vaotevaluestr,sum(ct) ct from (select case when votevaluestr like '%差%' then '差' when votevaluestr like '%好%' then '好' else votevaluestr end vaotevaluestr,ct from kb) b  group by vaotevaluestr


差2
否3
好8
一般2


[解决办法]
结合case  when和聚集函数来写
一楼的答案就很不错
[解决办法]
借用一下4楼的造数语句
----创建测试表
--create table kb(votevaluestr nvarchar(10),ct int)


----插入数据
--insert into kb 
--select N'否',3
--union all
--select N'很差',1
--union all
--select N'很好',1
--union all
--select N'较差',1
--union all
--select N'较好',7
--union all
--select N'一般',2
 
SELECT  CASE WHEN votevaluestr LIKE '%好%' THEN '好'
             WHEN votevaluestr LIKE '%差%' THEN '差'
             ELSE votevaluestr
        END VoteValueStr ,
        SUM(ct) ct
FROM    KB
GROUP BY CASE WHEN votevaluestr LIKE '%好%' THEN '好'
              WHEN votevaluestr LIKE '%差%' THEN '差'
              ELSE votevaluestr
         END 
/*
VoteValueStr ct
------------ -----------
差            2
否            3
好            8
一般           2

(4 行受影响)

*/

热点排行