#查询以填充特定条件的不同结果(挑战者查询)

mbzjlibv  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(255)

请任何人协助我们解决我们的最终挑战者查询。
表名: attendance_tbl ```
nota_id represents present or absent nota_id ='1' => PRESENT

priod_id

1=>Hour-1

2=>Hour-2

3=>Hour-3

4=>Hour-4

5=>Hour-5

如果priod\u id包含值1或2或3或4,那么根据条件,我们将百分比设置为0.25
如果priod\u id包含1或2或3或4或5,那么根据条件我们将百分比设置为0.2。
如果priod\u id大于4,如果它在任何一天的值为5,那么我们将所有1、2、3和4的百分比设置为0.2
如果priod\u id在4中,我们必须将所有1,2,3,4的百分比设置为0.25
例子:

Date : 2018-08-31
priod_id =1 , priod_id =2 priod_id =5
Then set Percentage = 0.2 for 1,2,5

priod_id =1 , priod_id =2 priod_id =4
Then set Percentage = 0.25 for 1,2,4

Please refer to the query we have tried the least.

SELECT *,
IF(nota_id = '1', Percentage,'0.0') AS ABSENT
from (SELECT *, CASE WHEN (max(priod_id) > 4) THEN "0.2"
ELSE "0.25"
END as Percentage
FROM attendance_tbl
WHERE DATE(attend_date) BETWEEN '2018-08-01' AND '2018-08-31'
AND sid = '74'
GROUP BY sid, attend_date) t

表结果和结构
n7taea2i

n7taea2i1#

我们找到了答案。
选择*,
情况(最大( priod_id )>4)然后“0.2”或“0.25”结束,以百分比表示,
count(priod\u id)作为小时,count(case when nota\u id='1'then 1 end)作为pr from attendance_tbl 其中日期(参加日期)介于日期('2018-08-01')和日期('2018-08-31')之间,sid='60'组按日期(参加日期)

相关问题