【问题标题】:Determine percentage by selecting rows that contains a specific word通过选择包含特定单词的行来确定百分比
【发布时间】:2020-10-06 22:35:58
【问题描述】:

我有以下数据:

Year  score count
2012 20 grade 2000
2005 20 grade 32
2005 40 grade 428 
2006 60 grade 731
2006 60 grade 472
...

我需要知道分数为 60 级的情况有多少百分比会导致高分。

我应该假设单词 Grade 出现在文本中的单词 Grade(所以在这种情况下是 60 Grade)。 我的预期输出将是基于计数的只有 60 级的行的百分比。

如何通过查看分数中 60 分的值来选择此信息并确定百分比?

【问题讨论】:

  • 您已经给出了 4 列数据,但只有三个列名。此外,您可能希望显示查询的预期输出。
  • 不,它们是三列。 20 级,40 级在分数列中

标签: sql teradata teradata-sql-assistant


【解决方案1】:

您可以尝试使用条件聚合

select count(*)
 , sum(case when score like '60%' then 1 else 0  end)  num_x_60
 , (sum(case when score like '60%' then 1 else 0 ) / count(*))*100 perc
from my_table  

【讨论】:

  • 为避免结果为 0(基于整数除法),应先相乘,然后相除。此外,您可以使用别名:100.0 * num_x_60 / count(*)
【解决方案2】:

我建议使用avg() 作为百分比:

select avg(case when score like '60%' then 100.0 else 0 end) as percentage
from my_table 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多