好吧,所以我想做一件棘手的事情。我有一个PHP的日历计划器,mySQL,人们在其中计划他们的假期。
在数据库中,它看起来是这样的:每个人都使用日期(z)(仅限天数)对假期列表进行了排序。
因此,在dbase中,它可以是这样的:
4
5
6
7
22
23
24
25
52
等等。
输出应该给出一个所有假期的列表和工作日的数量,总结在最后。所以类似的东西:
4-7 (4)
22-25 (2)
52 (1)
------
Sum (7)
我有计算工作日的工作功能,所以这取决于我,但有人知道如何从每个时段中获得第一天和最后一天吗?
您可以使用此查询来获取结果的第一部分。
select CONCAT(min(day), '-', max(day), ' (', max(day)-min(day)+1, ')') as result
FROM
(
select day, @curRow := @curRow + 1 as row_number, day - @curRow FROM days d JOIN (SELECT @curRow := 0) r
) A group by day - row_number;
此查询将提供总额:
SELECT CONCAT('Sum (', CAST(SUM(results) as CHAR(20)), ')') as results FROM
(
select max(day) - min(day) + 1 as results FROM
(
select day, @curRow := @curRow + 1 as row_number, day - @curRow FROM days d JOIN (SELECT @curRow := 0) r
) A group by day - row_number
) B
请参阅这篇文章,了解它是如何工作的。