随机长度列表中的第一个和最后一个数字

时间:2016-01-02 15:11:40

标签: php mysql

好的,所以我想尝试一些棘手的事情。我有一个PHP日历计划程序,mySQL正在计划他们的假期。

在数据库中看起来像这样: 每个人都使用日期(z)排序休假日列表 - 仅限日期。

所以在dbase中它看起来像这样:

4
5
6
7
22
23
24
25
52

输出应该列出所有休假期间的工作日数,最后总结。就这样:

4-7 (4)
22-25 (2)
52 (1)
------
Sum (7)

我有计算工作日的工作功能,所以这取决于我,但任何人都知道如何从每个这样的时期获得第一天和最后一天?

1 个答案:

答案 0 :(得分:0)

您可以使用此查询获取结果的第一部分。

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

有关此工作的解释,请参阅this post