在mysql中以百分比形式输出相同的列值
Posted
技术标签:
【中文标题】在mysql中以百分比形式输出相同的列值【英文标题】:same column value output as percentage in mysql 【发布时间】:2018-08-19 17:11:44 【问题描述】:样本表:
此表有员工 1 的 5 个条目。1 表示在场,2 表示缺席,3 表示迟到。我想要以下输出。
样本输出:
【问题讨论】:
【参考方案1】:这是一个非常简单的方法:
select employee_id,
avg( present_id = 1 ) as present_ratio,
avg( present_id = 2 ) as absent_ratio,
avg( present_id = 3 ) as late_ratio
from t
group by employee_id;
这会产生一个介于 0 和 1 之间的数值。如果你真的想要一个百分比,你可以乘以 100;我发现这个比例更容易理解。
这使用 mysql 扩展,其中布尔表达式的结果被视为数字上下文中的数字,0 表示假,1 表示真。更详细的方法使用 ANSI 标准功能:
avg(case when present_id = 1 then 1.0 else 0 end) as present_ratio
【讨论】:
它不能满足我的要求。 present_ratio+absent_ratio+late_ratio 应该是一百。但它给出了不同的结果。这就是我给出示例输出的原因。这里只是我只给了一个员工的条目。会有很多员工。 @hmamun 。 . .它加起来是“1”,而不是“100”。如果你想要 100,然后乘以 100,正如我在答案中解释的那样。正如您的问题所暗示的那样,此查询是针对每个员工的(您的结果集有一个员工 ID 列)。以上是关于在mysql中以百分比形式输出相同的列值的主要内容,如果未能解决你的问题,请参考以下文章