【问题标题】:Percentage of cases within a group by year按年份划分的组内病例百分比
【发布时间】:2020-10-07 02:22:40
【问题描述】:

我有这个数据集:

Year   Grade  count 
2010    B2     1
2010    B      478
2010    B1     46
2010    B1     12 
2010    B1     2
2010    B2     612
2010    A1     160
2010    A1     8
...

我想确定每一年(在示例中只有 2010 年)A1 和 B1 占该年总数的百分比,即

478+46+12+2=538 超过总B(B1,B,B2):1202

为了得到45%的百分比。 同样对于 A。 我想我也应该使用 like 来区分 B 和 A 值。 我该怎么办?

【问题讨论】:

  • @dnoeth,我已经尝试了代码,但它会给我以下消息:无法嵌套有序分析函数。
  • 你为什么接受一个无效的答案? :-)
  • 因为我无法对其进行测试,但代码应该可以完成我一直在寻找的工作。由于我有不同的值名称,我不得不更改它。我打开了一个新问题,以使用正确的名称而不是示例来解释我在做什么

标签: sql teradata teradata-sql-assistant


【解决方案1】:
SEL years,
Score,
,count(0)
,100.0*count(*) / 
Sum(Count(CASE WHEN grade LIKE '_1' THEN 1 end ))   -- A1 & B1
Over (PARTITION BY years, Substr(grade,1,1)) AS pct -- per A/B
From table1
Group by 1,2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    相关资源
    最近更新 更多