gpt4 book ai didi

sql - 查询关系模型

转载 作者:行者123 更新时间:2023-11-29 13:56:37 24 4
gpt4 key购买 nike

我在查询此任务时遇到了一些麻烦。任何人都请帮助我。

  • 汽车(牌照、品牌、年份);
  • 员工(EID、名字、姓氏、工资);
  • 客户(CID、名字、姓氏、电话);
  • OfficeStaff(EID, OfficeNumber);
  • 拥有(CID,许可证);
  • 技工(EID,每小时价格);
  • 维修(许可证、EID、零件成本、工时);

创建执行以下任务的 SQL 语句:

(a) 创建 OfficeStaff 表,同时考虑到 OfficeNumber 不能为 NULL 并且必须在范围 [1..10]。

(b) 找到汽车所有者的姓名,即名字和姓氏,这些汽车的修理时间为次数最多。

(c) 找出修理“Opel”品牌汽车所花费的平均小时数(即 Repairs.Hours)。

(d) 对于工资为 100 欧元或以上的所有机械师,将每小时价格更新为 20 欧元。

我的尝试:(a) 创建 OfficeStaff 表,同时考虑到 OfficeNumber 不能为 NULL 且必须在 [1..10] 范围内。

CREATE TABLE OfficeStaff (
EID INT PRIMARY KEY,
Firstname TEXT,
Lastname TEXT,
Wage REAL,
OfficeNumber INT NOT NULL,
CONSTRAINT CK_OfficeNumber CHECK (OfficeNumber BETWEEN 1 AND 10)

b) 不知道?!

(c) 找出修理“Opel”品牌汽车所花费的平均小时数(即 Repairs.Hours)。

SELECT AVG(R.Hours)
FROM Repairs R, Cars C
WHERE R.License = C.License AND C.Brand = “Opel”

(d) 对于工资为 100 欧元或以上的所有机械师,将每小时价格更新为 20 欧元。

UPDATE Mechanic
SET HourlyPrice = 20
WHERE Wage >= 100

最佳答案

(a)如何创建可以看here

CREATE TABLE OfficeStaff (
EID INT PRIMARY KEY,
Firstname varchar(100),
Lastname varchar(100),
Wage decimal(15,2),
OfficeNumber INT NOT NULL,
CONSTRAINT CK_OfficeNumber CHECK (OfficeNumber BETWEEN 1 AND 10)
)

(b) 对此不确定,但您必须使用 rank 才能在相同值中不仅获得 1 个值。为此,您可以查看 here

    WITH cte AS (
SELECT a.Firstname, a.Lastname, rank() OVER (ORDER BY count(c.Hours)) AS rnk
from Customers as a
join Own as b
on a.CID=b.CID
join Repairs as c
on b.License = c.License
group by a.Firstname, a.Lastname
)
SELECT *
FROM cte
WHERE rnk <= 1;

(c)加入使用here

SELECT AVG(R.Hours)
FROM Repairs R
join Cars C
on R.license=C.license
WHERE C.Brand = 'Opel'

(d) 更新使用 herehere

UPDATE Mechanic
SET HourlyPrice = 20
from Employees
WHERE Mechanic.EID = Employees.EID
AND Employees.Wage >= 100

关于sql - 查询关系模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580168/

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