我们有餐桌顾客和餐车。
customer表定义为: cust#,transaction# car表定义为: transaction#,car model#
car model#可以是日产、丰田或本田。
我们需要找出的是,有多少不同的客户购买了本田,但没有购买日产。汽车model#可以有多个记录,因为客户可以购买2-3辆本田或日产。事务编号是car表中的主键。
做这件事最具成本效益的方法是什么?
发布于 2011-06-01 07:04:56
试试这个:
SELECT COUNT(DISTINCT cust#)
FROM customer a, car b
WHERE a.transaction# = b.transaction#
AND b.model# = 'HONDA'
AND NOT EXISTS
(
SELECT 1
FROM customer c, car d
WHERE c.transaction# = d.transaction#
AND d.model# = 'NISSAN'
AND c.cust# = a.cust#
)发布于 2011-06-01 07:18:30
SELECT COUNT(DISTINCT cust.CUST#) AS COUNT FROM CUSTOMER cust INNER JOIN CAR car ON
cust.TRANS#=car.TRANS# WHERE CAR_MODEL#='HONDA'
AND NOT EXISTS
(SELECT COUNT(1) FROM CUSTOMER inner_cust INNER JOIN CAR inner_car ON
inner_cust.TRANS#=inner_car.TRANS#
AND inner_cust.CUST#=inner_car.CUST# WHERE inner_car.CAR_MODEL#='NISSAN')https://stackoverflow.com/questions/6194410
复制相似问题