gpt4 book ai didi

php - 每年获取统计数据

转载 作者:行者123 更新时间:2023-11-30 23:02:13 25 4
gpt4 key购买 nike

我正在用 php/MySQL 做一个应用程序,我需要每年获取统计数据,按状态分组。

但是,年份不是从 01-01 到 31-12 而是从 01-08 到 31-07 开始的。

我获取数据的表是这样的:

create table Archive (
id
dates (xx-xx-xxxx)
statut text
)

表格统计信息如下:

create table stats (
id int,
dates text something like (2013-2014)
statut,
)

I found this query :

我这样做:

SELECT *, date_format(dates,'%Y') as date, count(id) as nbId from archive group by statut, date

但我不知道如何获取 01-08 到 31-07 的统计信息

抱歉我的英语不好,谢谢你的回答。

最佳答案

第一步是在您的数据库中创建一个日历表并在您的查询中使用它。

第 1 步:

做一个带有日期限制的 MySQL 查询,比如 future 的任意日期(2040 年 12 月 31 日)和今年年初或者 2013 年(2014 年 1 月 1 日)

SELECT datediff('2040-12-31','2014-01-01');

您将需要该查询为您提供的值。上面的查询返回 9861。

第 2 步:

现在创建实际的日历表。您不仅需要日期,还需要可用于设置与每个日期关联的其他数据的各种字段,例如假期、周末、发薪日等。

CREATE TABLE calendar (
dt DATE NOT NULL PRIMARY KEY,
y SMALLINT NULL,
q tinyint NULL,
m tinyint NULL,
d tinyint NULL,
dw tinyint NULL,
monthName VARCHAR(9) NULL,
dayName VARCHAR(9) NULL,
w tinyint NULL,
isWeekday BINARY(1) NULL,
isHoliday BINARY(1) NULL,
holidayDescr VARCHAR(32) NULL,
isPayday BINARY(1) NULL
);

第 3 步:

填充表格

CREATE TABLE ints ( i tinyint );

INSERT INTO ints VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

INSERT INTO calendar (dt)
SELECT DATE('2010-01-01') + INTERVAL a.i*10000 + b.i*1000 + c.i*100 + d.i*10 + e.i DAY
FROM ints a JOIN ints b JOIN ints c JOIN ints d JOIN ints e
WHERE (a.i*10000 + b.i*1000 + c.i*100 + d.i*10 + e.i) <= 9861 #VALUE GOTTEN EARLIER
ORDER BY 1;

基本上,这会用您需要的值填充表格。要用发薪日、假期等的值填充表格,还有其他事情要做。

然后您可以运行如下查询:

SELECT `count(id)` as `nbid`, `date`,
(SELECT COUNT(*)
FROM `calendar`
WHERE `dt` > `date`
) AS `somethingdate`
FROM `archives`;

关于php - 每年获取统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com