MySQL-按日期范围分组

s

测试样本:

CREATE TABLE IF NOT EXISTS test_range (
  `day` DATE,
  `available` INT(11),
  `car_id`  INT(11)
);

INSERT INTO test_range (`day`, `available`, `car_id`) VALUES ('2014-11-20', 5, 1);
INSERT INTO test_range (`day`, `available`, `car_id`) VALUES ('2014-11-21', 5, 1);
INSERT INTO test_range (`day`, `available`, `car_id`) VALUES ('2014-11-22', 3, 1);
INSERT INTO test_range (`day`, `available`, `car_id`) VALUES ('2014-11-23', 5, 2);
INSERT INTO test_range (`day`, `available`, `car_id`) VALUES ('2014-11-24', 5, 2);

我的测试查询:

   SELECT * from test_range
   WHERE day between '2014-11-20' and '2014-11-23'
   AND available > 3
   GROUP BY car_id;

在这种情况下,我希望在此范围内所有可用的汽车,但是在22天时该汽车不可用,因此我希望它不会出现在结果中。

例如,如果我的天数介于20、21、22之间,并且我希望可用性高于4,则不应出现汽车1,因为在第22天它没有。

我如何才能只获得给定范围内全天可用的汽车?

帕特里克·Q

HAVING条款应做的伎俩,只要你能找出多少天是你的搜索范围内(你应该能够很容易地做到)

SELECT * from test_range
   WHERE `day` between '2014-11-20' and '2014-11-26'
     AND `available` > 3
   GROUP BY `car_id`
   HAVING COUNT(*) = DATEDIFF('2014-11-26','2014-11-20')+1;

例子

因为无论是汽车1也不汽车2可在所有日子里,唯一的汽车3(你可以看到我添加的,并在所有天可用)的结果显示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL:按日期范围分组

来自分类Dev

MySQL查询按日期范围分组?

来自分类Dev

MySQL查询按日期范围对结果分组?

来自分类Dev

MySQL-按日期范围将结果分组

来自分类Dev

MYSQL在特定时间按日期时间范围分组

来自分类Dev

获取给定日期范围和按日期分组的最大值PHP MYSQL

来自分类Dev

mysql最大按日期分组

来自分类Dev

MySQL日期范围多列计数和按选择语句分组

来自分类Dev

mysql按日期范围显示行和分组中的每种类型

来自分类Dev

MySQL 按日期分组小于多个日期

来自分类Dev

在mysql / MariaDB中按可变范围分组

来自分类Dev

MySQL累积和按日期分组

来自分类Dev

MYSQL按日期分组性能查询

来自分类Dev

MySQL按值和最大日期分组

来自分类Dev

MYSQL Max日期按两列分组

来自分类Dev

mysql按日期分组的余额计算

来自分类Dev

MYSQL按日期分组性能查询

来自分类Dev

MySQL按值和最大日期分组

来自分类Dev

MySQL 按日期和名称分组

来自分类Dev

MySQL按日期和计数分组,包括缺少的日期

来自分类Dev

按浮动日期范围分组

来自分类Dev

按日期时间范围分组

来自分类Dev

按浮动日期范围分组

来自分类Dev

按日期时间范围分组

来自分类Dev

在mysql的varchar列中仅按日期分组

来自分类Dev

MySQL:按日期和分组依据选择行顺序

来自分类Dev

在PHP中按日期将MySQL结果分组

来自分类Dev

MYSQL查询:按日期对条目进行分组并对条目进行计数

来自分类Dev

PHP Mysql PDO按日期范围检索记录