Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tính tổng đang chạy cho mỗi nhóm trong MySQL

Trước tiên, hãy tính toán tổng điểm đang chạy của mỗi tháng trong một CTE.
Sau đó, áp dụng các điều kiện của bạn:

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

Xem bản trình diễn .
Kết quả:

> 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhóm Mysql theo hai cột và chọn giá trị lớn nhất của cột thứ ba

  2. Làm cách nào để hủy tất cả các quy trình trong danh sách quy trình hiển thị Mysql?

  3. PHP mySQL - Khi nào là thời điểm tốt nhất để ngắt kết nối khỏi cơ sở dữ liệu?

  4. Sử dụng SQL để xác định số liệu thống kê về số lượng từ của một trường văn bản

  5. Sao chép một bảng duy nhất