计算比例(百分比)

nszi6y05  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(467)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
你能帮我计算一下

Table
user_id    attendance   Date
1            1           01.01.2018
2            Null        01.01.2018
3            1           02.01.2018
4            Null        03.01.2018
5            1           03.01.2018

如果用户有考勤,则为1,否则为空。
需要计算01.01.18-02.01.18期间的出勤率。例如,在2018年1月1日,有两个用户中的一个(50%)在2018年1月2日-100%。
坦克!

eoxn13cs

eoxn13cs1#

您可以尝试以下查询:

SELECT
    Date,
    100.0 * COUNT(attendance) / COUNT(*) AS perc_attendance
FROM yourTable
WHERE Date BETWEEN '2018-01-01' AND '2018-01-02'
GROUP BY
    Date;

这假设给定的用户在给定的日期最多只出现一次。它还假设 Date 列是实际的日期列,而不仅仅是文本。

演示

rkttyhzu

rkttyhzu2#

如果尝试显示为新表,则可以使用此查询,但必须创建一个:

SELECT Date,100.0 * COUNT(attendance) / COUNT(*) AS attendancepercent
FROM Table WHERE Date BETWEEN '2018-01-01' AND '2018-01-02'
GROUP BY Date;
8ftvxx2r

8ftvxx2r3#

select v.date1 , case when s.no_people is null and v.showup_people then 100
when v.showup_people is null and s.no_people is not null then 0
else (v.showup_people / (v.showup_people + s.no_people))*100  end outcome 

from
(select count(*) as no_people , date as date1
   from yourTable
   where attendance is null
   group by date) s
   right outer join
   (select count(*) as showup_people , date as date1
   from yourTable
   where attendance is not null
   group by date) v
on(v.date1 = s.date1)

将表名中的from表替换为。。
不管你有多少次约会,这都是有效的。这种情况是因为null+mysql中的一个数字表示null。在oraclesql中,您可以只使用最后一个else语句。
这是一个演示

相关问题