【发布时间】:2019-07-23 20:27:23
【问题描述】:
我正在从汽车数据库练习 SQL,我有以下 CAR 表/视图,我需要选择比发动机/摩托车销售更多汽车的品牌。这意味着我必须选择只有 CAR 类型的 UNIT_SOLD 大于 ENGINE OR MOTORCYCLE 的值的行。
BRAND UNIT_SOLD TYPE
ACURA 1 MOTORCYCLE
CHEVY 3 ENGINE
CHEVY 1 CAR
DODGE 1 ENGINE
FORD 1 MOTORCYCLE
FORD 1 ENGINE
FORD 3 CAR
NISSAN 1 MOTORCYLE
NISSAN 1 ENGINE
NISSAN 2 CAR
TOYOTA 1 MOTORCYCLE
TOYOTA 3 CAR
VOLVO 3 MOTORCYCLE
VW 2 CAR
例如,在前面的例子中我必须返回:
FORD
NISSAN
TOYOTA
VW
解释:以前的品牌销售的汽车多于发动机/摩托车。 CHEVY 不考虑,因为他们销售 3 台发动机和 1 辆汽车。
我一直在尝试使用条件 SELECT 语句来解决这个问题,但是我不知道这是否是一个好方法。
非常感谢。
SELECT BRAND
FROM CARS A
WHERE A.TYPE = 'CAR'
AND A.UNIT_SELLS > (SELECT B.UNIT_SELLS FROM CARS B WHERE B.TYPE = 'ENGINE' AND A.MAKER=B.MAKER)
OR A.UNIT_SELLS > (SELECT B.UNIT_SELLS FROM CARS B WHERE B.TYPE = 'MOTORCYCLE' AND A.BRAND=B.BRAND);
SELECT BRAND
FROM CARS A
WHERE A.TYPE = 'CAR'
AND A.UNIT_SELLS > (SELECT B.UNIT_SELLS FROM CARS B WHERE B.TYPE = 'ENGINE' AND A.MAKER=B.MAKER)
OR A.UNIT_SELLS > (SELECT B.UNIT_SELLS FROM CARS B WHERE B.TYPE = 'MOTORCYCLE' AND A.BRAND=B.BRAND);
目前我能够获得 CAR unit_sold 更大的行,但是我仍然无法获得销售任何数量的汽车并且他们没有出售任何摩托车/发动机的行。
【问题讨论】:
标签: sql