Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL从日期、最低值和最高值中选择不同的最小值和最大值记录_Php_Mysql_Date - Fatal编程技术网

Php SQL从日期、最低值和最高值中选择不同的最小值和最大值记录

Php SQL从日期、最低值和最高值中选择不同的最小值和最大值记录,php,mysql,date,Php,Mysql,Date,假设我有一张这样的桌子: id | date | price ------------------------------- 1 | 2018-03-06 22:19:10 | $10 2 | 2018-03-06 13:16:19 | $12 3 | 2018-03-06 00:12:11 | $18 4 | 2018-03-05 23:29:10 | $10 5 | 2018-03-05 03:16:19 | $05 6

假设我有一张这样的桌子:

id  |  date               | price
-------------------------------
1   | 2018-03-06 22:19:10 | $10   
2   | 2018-03-06 13:16:19 | $12 
3   | 2018-03-06 00:12:11 | $18 
4   | 2018-03-05 23:29:10 | $10 
5   | 2018-03-05 03:16:19 | $05 
6   | 2018-03-05 00:11:11 | $11
我想检索不同的日期,对于每个不同的日期,它的第一个结果(如最低小时)及其相关价格,以及最近的结果(如最高小时)及其相关价格。 我还需要检索每个不同日期的最高和最低价格

是否可以通过一个查询来实现这一点?如果是,如何进行? 我尝试使用distinct(date),但由于时间不同,它会返回所有结果。我也试过Trunc,但不起作用

Sample result:
date        min_price   max_price   lowest_hour_price   highest_hour_price
2018-03-06  $10         $18         $18                 $10

我使用的是mySql 5.6,此查询有效:

select date(m.min_max_date) as date,
   max(case when m.lbl='min_hr_price' then m.min_max_hr_price else null end) as lowest_hr_price,
   max(case when m.lbl='max_hr_price' then m.min_max_hr_price else null end) as max_hr_price,
   max(case when n.lbl='min_price' then n.min_max_price else null end) as min_price,
   max(case when n.lbl='max_price' then n.min_max_price else null end) as max_price
from (select 'min_hr_price' as lbl, price as min_max_hr_price, date as min_max_date 
  from tbl 
  where date in (select min(date) as min_date from tbl group by date(date))
union 
select 'max_hr_price', price, date   
  from tbl 
  where date in (select max(date) as max_date from tbl group by date(date))) as m,
(
select 'min_price' as lbl,
min(date) as min_max_date,
min(price) as min_max_price
from tbl
group by date(date)
union
select 'max_price' as lbl,
max(date) as min_max_date,
max(price) as min_max_price
from tbl
group by date(date)
) n
where m.min_max_date=n.min_max_date
group by date(m.min_max_date)
order by m.min_max_date

Sample result:
date        lowest_hr_price max_hr_price    min_price   max_price
2018-03-06  $1102.8         $1821           $1011.6     $1821

INSERT INTO TBL VALUES(1, '2018-03-06 22:19:10', '$1011.6');
INSERT INTO TBL VALUES(2, '2018-03-06 13:19:11', '$1011.6');
INSERT INTO TBL VALUES(3, '2018-03-06 03:21:25', '$1106.2');
INSERT INTO TBL VALUES(4, '2018-03-06 00:26:50', '$1102.8');
INSERT INTO TBL VALUES(5, '2018-03-06 22:26:17', '$1821');

不要存储“$”。Distinct不是一个函数。请告诉我们您的预期结果或产量。Thanksi不知道如何编辑,但预期输出是:一天中最低小时的价格、一天中最高小时的价格、一天中所有小时的最高价格、一天中所有小时的最低价格。这是每一个独特的日子@AnonyXmous你可以按编辑按钮我还需要一天中最低小时的价格,一天中最高小时的价格。我更新了我的答案。长的,丑陋的,但工作。谢谢。这很奇怪…我试过一些价格,我插入了:1011.61106.218211102.8。它正确地采用最小价格和最大价格,但最低小时价格为0,最高小时价格为9.51,这两个值不存在。怎么可能呢?让我看看你在那个特定日期的所有数据,然后我们会再检查一遍。感谢1011.6 |日期2018-03-06 22:19:10,价格1011.6 |日期2018-03-06 13:19:11,价格1106.2 |日期2018-03-06 03:21:25,价格1102.8 |日期2018-03-06 00:26:50,价格1821 |日期2018-03-06 22:26:17