我的桌子如下所示
CREATE TABLE IF NOT EXISTS `testtab` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`auto_num` varchar(100) NOT NULL,
`seal_num` varchar(100) NOT NULL,
`arr_date` date NOT NULL,
`unload_date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
INSERT INTO `testtab` (`id`, `name`, `auto_num`, `seal_num`, `arr_date`, `unload_date`) VALUES
(1, 'contain1', 'AT0000004815', 'CN44178', '2014-11-28', '2014-11-28'),
(2, 'contain1', 'AT0000004815', 'CN44178', '2014-12-28', '2014-12-28'),
(3, 'contain1', 'AT0000004815', 'CN44178', '2014-12-28', '2014-11-28'),
(4, 'contain1', 'AT0000004815', 'CN44178', '2014-11-28', '2014-12-28'),
(5, 'contain2', 'AT0000000227', 'CG11818', '2015-09-12', '2015-08-30'),
(6, 'contain2', 'AT0000000227', 'CG11818', '2015-08-30', '2015-08-30'),
(7, 'contain2', 'AT0000000227', 'CG11818', '2015-09-12', '2015-09-14'),
(8, 'contain2', 'AT0000000227', 'CG11818', '2015-08-30', '2015-09-14'),
(9, 'contain3', 'AT0000005297', 'FG1005G', '2015-01-25', '2015-01-27'),
(10, 'contain3', 'AT0000005297', 'FG1005G', '2015-01-25', '2014-12-27');
我需要如下所示的输出结果Mysql查询结果必须包含arr_date、unload_date分组中的max date值:name、auto_num、seal_num
id name auto_num seal_num arr_date unload_date
2 contain1 AT0000004815 CN44178 2014-12-28 2014-12-28
7 contain2 AT0000000227 CG11818 2015-09-12 2015-09-14
9 contain3 AT0000005297 FG1005G 2015-01-25 2015-01-27
我想在这里使用什么查询请帮助我,
我猜您正在为名称
、自动编号
和密封编号
的每个不同组合寻找最新的到达日期
和卸载日期
。但是您没有解释表中的内容,所以我可能猜错了。
SQL小提琴
这个查询给了你这个。它没有给出行id,因为最新的arr_date
和最新的unload_date
可能来自不同的行。
select name, auto_num, seal_num,
MAX(arr_date) arr_date, MAX(unload_date) unload_date
from testtab
group by name, auto_num, seal_num
结果:
| name | auto_num | seal_num | arr_date | unload_date |
|----------|--------------|----------|-------------------|-------------------|
| contain1 | AT0000004815 | CN44178 | December, 28 2014| December, 28 2014|
| contain2 | AT0000000227 | CG11818 | September, 12 2015| September, 14 2015|
| contain3 | AT0000005297 | FG1005G | January, 25 2015| January, 27 2015|
您可以这样做:
SELECT * FROM `testtab` t
WHERE (t.arr_date,t.unload_date) in(select max(arr_date),max(unload_date)
from `testtab` s where s.name = t.name
and s.auto_num = t.auto_num and s.seal_num = t.seal_num)
这将为每个组合(名称、自动编号、密封编号)选择最大到货日期和卸货日期,然后检查行中两列是否相等,选择它。
问题内容: 我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。 前任: 如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。 有没有一种简单的方法可
我尝试创建一个查询,显示入住和退房日期之间的可用酒店。此外,当我为特定房间预订时,我将他们的预订列设置为1。这意味着,在现实生活中,当结账日期到来时,触发函数将该预订列设置成0。 如果酒店的所有房间都已预订(预订=1),并且这些房间的签入-退房日期是特定日期(签入-退房输入),则不要将该酒店放在列表中。我的查询不会显示我想要的结果。 查询:输入:国家(状态)、签入和签出。 当我运行查询时,它总是显
问题内容: 我有这个SQL查询: 结果是这样的: 我现在的问题是我无法将DateCreated分组,因为它具有不同的时间。 我只想按日期分组。范例:2010-09-12 谢谢并恭祝安康… 问题答案: 我认为值得单独发布以下内容: 使用char转换来削减超时日期(广播或转换为varchar)比使用慢。我制定了[完整的脚本和性能测试结果以支持此断言 另外,请注意,您的GROUP BY列表与SELECT
在SQL中,如何按查询分组获取计数中的最小/最大日期? 查询: --这并没有给出文件的最小和最大接收日期 预期输出...与SourceId、Count、StartDate(最小值)、EndDate(最大值)一起
我有一个疑问。我有一个表,其中有些记录重复日期时间。我必须把最后一个从日期时间重复的地方拿来。示例: 它应该返回ID3、4和7 你能帮我吗?谢谢!
我有一个熊猫DataFrame看起来像这样: 我的目标是能够为每个项目计算每个日期之间的价值差异。例如,我想找到A项: 12(32-20,因为最大年份是2012年,最小年份是2010年)和B项:20 (40 - 20,因为最大年份是2019年,最小年份是2016年)。 我使用以下代码获取每个项目的年最大值和年最小值: 然后,我找到每个项目的年份最小值和年份最大值。然而,我坚持做我想要的。