sql >> Database teknologi >  >> RDS >> Mysql

Sådan beregnes løbende sum for hver gruppe i MySQL

Beregn først den løbende sum af resultaterne for hver måned i en CTE.
Anvend derefter dine betingelser:

with cte as (
  select date_format(dateOfExam, '%Y-%m') ExamMonth,
         dateOfExam, score, 
         sum(score) over (partition by date_format(dateOfExam, '%Y-%m') order by dateOfExam) total
  from student
)
select ExamMonth, dateOfExam, score, 
       case when sum(total >= 10) over (partition by ExamMonth order by dateOfExam) = 1 then 'Y' end Reward1,
       case when sum(total >= 20) over (partition by ExamMonth order by dateOfExam) = 1 then 'Y' end Reward2
from cte
 

Se demoen .
Resultater:

> ExamMonth | dateOfExam | score | Reward1 | Reward2 > :-------- | :--------- | ----: | :------ | :------ > 2020-05 | 2020-05-28 | 5 | null | null > 2020-05 | 2020-05-29 | 5 | Y | null > 2020-05 | 2020-05-30 | 10 | null | Y > 2020-06 | 2020-06-03 | 10 | Y | null > 2020-06 | 2020-06-05 | 5 | null | null > 2020-07 | 2020-07-21 | 20 | Y | Y > 2020-07 | 2020-07-22 | 10 | null | null > 2020-07 | 2020-07-28 | 10 | null | null

  1. Begræns en SQL Server-forbindelse til en specifik IP-adresse

  2. Fix Msg 8116 "Argumentdatatypedatoen er ugyldig for argument 1 for substring-funktionen" i SQL Server

  3. Databaseindeksering i PostgreSQL

  4. Fang duplikatindtastning Undtagelse