首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用日期范围进行计算

如何使用日期范围进行计算
EN

Stack Overflow用户
提问于 2013-05-22 05:13:22
回答 2查看 158关注 0票数 0

好了,这段代码-- TAT --对你来说可能很简单,但我对此很感兴趣。

这将返回每个女孩的玩具数量

代码语言:javascript
复制
Select Toys,
Count(Girls),
TAT
from Table1 (nolock)

代码语言:javascript
复制
Girl       Toys           TAT
_____      ______         ___________

Kelly       1              0-5
Michelle    1              16-30
Grace       1              31+
Katy        1              6-10
Kelly       1              16-30

这将返回每个年龄范围内的玩具数量

代码语言:javascript
复制
Select TAT,
Count(TAT)
from Table1 (nolock)

代码语言:javascript
复制
TAT          ??????
_____        ___________
0-5             1
6-10            0
11-15           1
16-30           2
31+             1

我需要做的下一步是将1(16-30岁的Kelly)除以它放入的年龄范围内的玩具数量(16-30岁的2):

代码语言:javascript
复制
1  / 2  = 50.00%

我该怎么做?带有?的列就是我被困的地方。

谢谢!冬青

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-22 14:11:32

代码语言:javascript
复制
create table #table1 (Girl varchar(20), toys int, tat varchar(10))  
insert into #table1 (Girl, toys, tat)  
 values ('Kelly',1,'0-5')  
,('Michelle',1,'16-30')  
,('Grace',1,'31+')  
,('Katy',1,'6-10')  
,('Kelly',1,'16-30')  

declare @dividend numeric(5,2) = 1  
;with gtcount as (select tat, COUNT(*) ctr  
                  from #table1  
                  group by tat )  
select tat,ctr, @dividend/ctr percentage from gtcount  

希望这能帮到你。

埃尔默

票数 0
EN

Stack Overflow用户

发布于 2013-05-22 09:46:53

你听起来真的很困惑--出于好心,我试了试。如果这是不正确的,你需要发布更多关于你到底需要什么的信息。

a.您的示例查询不正确(由于缺少GROUP BY,它们将出错)

b.您的样本数据不完整。在第一步中,您的数据似乎表明您希望按Girl和TAT进行分组,但您明确表示您的查询是计算每个女孩的玩具,而不是每个Girl/TAT对的玩具。哪一个是对的?

“显示每个日期范围内每个玩具的百分比”。当样本数据不完整时,这就不那么简单了

代码语言:javascript
复制
;WITH GirlTATCount AS (
  SELECT
    Girl,
    TAT,
    COUNT(*) as [ToyCount]
  FROM Table1
  GROUP BY Girl, TAT
)
, ToysInAgeRange AS (
  SELECT
    TAT,
    COUNT(*) as [ToyCount]
  FROM Table1
  GROUP BY TAT
)
SELECT
  gtc.Girl,
  gtc.TAT,
  gtc.ToyCount,
  CAST(gtc.ToyCount as float) / CAST(tar.ToyCount as float) as [%]
FROM GirlTATCount gtc
JOIN ToysInAgeRange tar
  ON tar.TAT = gtc.TAT
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16679576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档