统计问题(求简单方法)

studyweb 2005-01-14 09:51:22
以下是一个报价数据库的格式

品牌 型 号 商家 报价 时间
GIANT 32T自行车 上海GIANT公司 1131 今天
美能达 66T自行车 北京美能达公司 2312 今天
GIANT 77T自行车 上海GIANT公司 1153 今天
ALKTP 88T自行车 上海ALKTP公司 1357 今天
阿米尼 99T自行车 广东阿米尼公司 2144 今天
GIANT 11T自行车 上海GIANT公司 1654 今天
GIANT 22T自行车 上海GIANT公司 3233 2005-1-11


如何用最简单的方法得到

今天有几家公司报了价/每家公司的名称是什么/报价的条数

结果如下 今天有4家公司报了价/上海GIANT公司,北京美能达公司,上海ALKTP公司,广东阿米尼公司/报价的条数为5条
...全文
151 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
studyweb 2005-01-14
  • 打赏
  • 举报
回复
我只要显示出今天(商家和商家报价条数)两项怎么写函数,并且如何在ASP中调用?
子陌红尘 2005-01-14
  • 打赏
  • 举报
回复
create table tn(
品牌 varchar(20),
型号 varchar(20),
商家 varchar(20),
报价 int,
时间 datetime)

insert into tn values('GIANT' ,'32T自行车', '上海GIANT公司' ,1131 ,cast('2005-01-14' as datetime))
insert into tn values('美能达' ,'66T自行车', '北京美能达公司' ,2312 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'77T自行车', '上海GIANT公司' ,1153 ,cast('2005-01-14' as datetime))
insert into tn values('ALKTP' ,'88T自行车', '上海ALKTP公司' ,1357 ,cast('2005-01-14' as datetime))
insert into tn values('阿米尼' ,'99T自行车', '广东阿米尼公司' ,2144 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'11T自行车', '上海GIANT公司' ,1654 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'22T自行车', '上海GIANT公司' ,3233 ,cast('2005-01-12' as datetime))

create function f_sum(@dates char(10))
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+rtrim(a.商家)
from (select distinct 商家 from tn where convert(char(10),时间,120)=@dates) a
return(stuff(@r,1,1,''))
end
go


select
a.dates,
dbo.f_sum(a.dates) as 商家,
count(a.dates) as 报价次数
from
(select convert(char(10),时间,120) as dates, 商家 from tn) a
where
a.dates = '2005-01-14'
group by
a.dates
studyweb 2005-01-14
  • 打赏
  • 举报
回复
统计2005-1-14
studyweb 2005-01-14
  • 打赏
  • 举报
回复
品牌 型 号 商家 报价 时间
GIANT 32T自行车 上海GIANT公司 1131 2005-1-14 09:09:09
美能达 66T自行车 北京美能达公司 2312 2005-1-14 09:19:09
GIANT 77T自行车 上海GIANT公司 1153 2005-1-14 09:29:09
ALKTP 88T自行车 上海ALKTP公司 1357 2005-1-14 09:39:09
阿米尼 99T自行车 广东阿米尼公司 2144 2005-1-14 09:49:09
GIANT 11T自行车 上海GIANT公司 1654 2005-1-14 09:59:09
GIANT 22T自行车 上海GIANT公司 3233 2005-1-11 02:59:09
studyweb 2005-01-14
  • 打赏
  • 举报
回复
对不起大家报价条数是6
zjcxc 2005-01-14
  • 打赏
  • 举报
回复
--大致的处理方法
declare @s varchar(8000)
set @s=''
select @s=@s+','+rtrim(商家)
from 表
where 时间='今天'
group by 商家
select @s='今天有'+rtrim(count(distinct 商家))+'家公司报了价/'
+stuff(@s,1,1,'')
+'/报价的条数为'+rtrim(count(*))+'5条'
from 表
where 时间='今天'

select 结果=@s
tigerjacky 2005-01-14
  • 打赏
  • 举报
回复
几家公司报了价
select count(distinct(商家)) from yourtable where 时间 = 今天
zjcxc 2005-01-14
  • 打赏
  • 举报
回复
报价的条数为5条
这个是怎么统计的?
tigerjacky 2005-01-14
  • 打赏
  • 举报
回复
获得每家公司的名称
select 商家 from yourtable where 时间 = 今天 group by 商家
报价条数
select count(*) from yourtable where 时间 = 今天
skyboy0720 2005-01-14
  • 打赏
  • 举报
回复
如果是我写的话,写个自定义函数返回你要的字符串
zjcxc 2005-01-14
  • 打赏
  • 举报
回复
在数据库中创建好自定义函数,注意函数中用到的表名及字段名要根据实际情况修改

然后在asp中,用下面的语句调用就行了(和执行普通的sql语句一样)
select dbo.f_sum(getdate())
zjcxc 2005-01-14
  • 打赏
  • 举报
回复
--测试数据
create table tn(
品牌 varchar(20),
型号 varchar(20),
商家 varchar(20),
报价 int,
时间 datetime)

insert into tn values('GIANT' ,'32T自行车', '上海GIANT公司' ,1131 ,cast('2005-01-14' as datetime))
insert into tn values('美能达' ,'66T自行车', '北京美能达公司' ,2312 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'77T自行车', '上海GIANT公司' ,1153 ,cast('2005-01-14' as datetime))
insert into tn values('ALKTP' ,'88T自行车', '上海ALKTP公司' ,1357 ,cast('2005-01-14' as datetime))
insert into tn values('阿米尼' ,'99T自行车', '广东阿米尼公司' ,2144 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'11T自行车', '上海GIANT公司' ,1654 ,cast('2005-01-14' as datetime))
insert into tn values('GIANT' ,'22T自行车', '上海GIANT公司' ,3233 ,cast('2005-01-12' as datetime))
go

--处理函数
create function f_sum(@date datetime)
returns varchar(8000)
as
begin
declare @s varchar(8000)
set @s=''
select @s=@s+','+rtrim(商家)
from tn
where datediff(day,时间,@date)=0
group by 商家
select @s='今天有'+rtrim(count(distinct 商家))+'家公司报了价/'
+stuff(@s,1,1,'')
+'/报价的条数为'+rtrim(count(*))+'条'
from tn
where datediff(day,时间,@date)=0

return(@s)
end
go

--调用
select dbo.f_sum(getdate())
go

--删除测试
drop table tn
drop function f_sum

/*--测试结果

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
今天有4家公司报了价/北京美能达公司,广东阿米尼公司,上海ALKTP公司,上海GIANT公司/报价的条数为6条

(所影响的行数为 1 行)

--*/
zjcxc 2005-01-14
  • 打赏
  • 举报
回复

create function f_sum(@date datetime)
returns varchar(8000)
as
begin
declare @s varchar(8000)
set @s=''
select @s=@s+','+rtrim(商家)
from tn
where datediff(day,时间,@date)=0
group by 商家
select @s='今天有'+rtrim(count(distinct 商家))+'家公司报了价/'
+stuff(@s,1,1,'')
+'/报价的条数为'+rtrim(count(*))+'条'
from tn
where datediff(day,时间,@date)=0

return(@s)
end
go

select dbo.f_sum(getdate())
子陌红尘 2005-01-14
  • 打赏
  • 举报
回复
select
a.dates,
dbo.f_sum(a.dates) as 商家,
count(a.dates) as 商家报价条数
from
(select convert(char(10),时间,120) as dates, 商家 from tn where datediff(dd,时间,getdate()) = 0) a
group by
a.dates
tengjian1981 2005-01-14
  • 打赏
  • 举报
回复
select 时间,count(distinct(商家)),Count(*) from yourtable
Group by 时间
子陌红尘 2005-01-14
  • 打赏
  • 举报
回复
自定义函数可以不改,调用的地方做一点调整:

select
a.dates,
dbo.f_sum(a.dates) as 商家,
count(a.dates) as 商家报价条数
from
(select convert(char(10),时间,120) as dates, 商家 from tn) a
where
a.dates = convert(char(10),getdate(),120)
group by
a.dates

ASP中跟普通SQL语句一样的使用,没有特别的地方。

27,580

社区成员

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

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