gpt4 book ai didi

java - HQL 中的 Group By 和 Sum 结果

转载 作者:行者123 更新时间:2023-12-01 23:56:16 25 4
gpt4 key购买 nike

CREATE TABLE project(
Id int auto_increment primary key,
Name char(50) NOT NULL
)ENGINE = InnoDB;

CREATE TABLE car(
Id int auto_increment primary key,
ProjectId int(11) NOT NULL,
Plate char(10) NOT NULL,
Latitude varchar(50) DEFAULT '-6.221165',
Longitude varchar(50) DEFAULT '106.833286',
LastTemp varchar(20) DEFAULT '0',
LastSpeed varchar(20) DEFAULT '0',
LastGap double DEFAULT 0,
Mileage double DEFAULT 0,
CONSTRAINT fk_car_project FOREIGN KEY(ProjectId)REFERENCES project(Id) ON UPDATE CASCADE
)ENGINE = InnoDB;

CREATE TABLE car_log(
Id int auto_increment primary key,
CarId int NOT NULL,
Latitude varchar(50),
Longitude varchar(50),
Temp varchar(20),
Speed varchar(20),
Gap double DEFAULT 0,
LogDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_carlog_car FOREIGN KEY(CarId)REFERENCES car(Id) ON UPDATE CASCADE
)

表car用于保存汽车数据,并具有来自表项目的外键。表car_log用于保存汽车的每一次 Action (日志)。我已经为每个表创建了对象。在本例中,我想显示项目中每辆车的摘要(每天的差距总和)。这是我想选择项目 1 中每辆车的摘要时的查询

select CarId, DATE(LogDate) dateOnly, sum(Gap)/1000 KM from car_log where CarId IN (SELECT Id FROM car where ProjectId = 1) group by CarId, dateOnly;

但是我很困惑如何在 HQL 中处理这个问题。我尝试创建新对象来处理这个问题,但使用它时感到困惑。我想问一下这个问题怎么解决

public class CarLogDate {
private double km;
private Date date;
//constructor & setter getter
}

最佳答案

在查询中,只需将表名称替换为实体名称,将表列名称替换为实体属性。

List<Object[]> list = 
select CarId, LogDate dateOnly, sum(Gap)/1000 KM
from CarLogDate
where CarId IN
(SELECT Id FROM car where ProjectId = 1)
group by CarId, dateOnly;

关于java - HQL 中的 Group By 和 Sum 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com