我有以下数据库架构

ID  creation_date
1      2019-06-03
2      2019-06-04
3      2019-06-04
4      2019-06-10
5      2019-06-11

我需要按周找出表组的总大小。我正在寻找的输出类似于
year   week number_of_records
2019    23      3
2019    24      5

我正在编写以下查询,它只给我每周创建的记录数
> select year(creation_date) as year, weekofyear(creation_date) as week,
> count(id) from input group by year, week;

我得到的输出是
year   week number_of_records
2019    23      3
2019    24      2

最佳答案

对于 8.0 之前的版本...

架构 (MySQL v5.7)

CREATE TABLE my_table
(ID SERIAL PRIMARY KEY
,creation_date DATE NOT NULL
);

INSERT INTO my_table VALUES
(1    ,  '2019-06-03'),
(2     , '2019-06-04'),
(3     , '2019-06-04'),
(4      ,'2019-06-10'),
(5      ,'2019-06-11');

查询 #1
SELECT a.yearweek
, @i:=@i+a.total running
FROM
(SELECT DATE_FORMAT(x.creation_date,'%x-%v') yearweek
, COUNT(*) total
FROM my_table x
GROUP BY yearweek
)a
JOIN (SELECT @i:=0) vars
ORDER BY a.yearweek;

| yearweek | running |
| -------- | ------- |
| 2019-23  | 3       |
| 2019-24  | 5       |

---

View on DB Fiddle

关于mysql - 按周分组的记录数的累积总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57155799/

10-11 03:04