我在下面的sql查询中遇到了很大的问题,基本上我想按日期“Y-m-d”对表进行分组,找到该组的最小值并返回它发生的时间。
然而,它保持返回时间= 00:00:00,我不知道有什么问题。任何帮助将受到高度赞赏。
例如:对于第一个结果,它正确计算了该组的最低价格,但时间是04:00:00,但它仍然返回00:00:00
根据返回的ID,它似乎返回该组第一个元素的日期 - 而不是最低价格的实际日期。
/**
* Fetch a list of up to 10 file names and IDs.
* @return List of Strings describing files, or an empty list if no files
* found.
* @throws IOException
*/
private List<String> getDataFromApi() throws IOException {
// Get a list of up to 10 files.
List<String> fileInfo = new ArrayList<String>();
FileList result = mService.files().list()
.setPageSize(10)
.setFields("nextPageToken, files(id, name)")
.execute();
List<File> files = result.getFiles();
if (files != null) {
for (File file : files) {
fileInfo.add(String.format("%s (%s)\n",
file.getName(), file.getId()));
}
}
return fileInfo;
}
表:
结果:
Select val_date
, id
, MIN(average_price) AS min_value
from tableY
GROUP
BY Month(val_date)
, Year(val_date)
, Day(val_date);
尝试:
[{"val_date":"2017-01-01 00:00:00","id":1,"min_value":964.33},
{"val_date":"2017-01-02 00:00:00","id":25,"min_value":998.24},
{"val_date":"2017-01-03 00:00:00","id":49,"min_value":1016.4},
{"val_date":"2017-01-04 00:00:00","id":73,"min_value":1034.02}
所有结果仍然返回00:00:00
答案 0 :(得分:0)
如果您需要按日期的最小值(val_date)的行值,您可以在subselect中使用
select val_date, id, average_price as min_value,
from tableY
where ( val_date, average_price) in (
select
date(val_date)
, MIN(average_price)
from tableY
group by date(val_date)
)
或使用加入
select a.val_date, a.id, a.average_price as min_value,
from tableY a
inner join (
select
date(val_date) as date_val_date
, MIN(average_price) min_price
from tableY
group by date(val_date)
) t on date(a.val_date ) = t.date_val_date and a.average_price = t.min_price