Sql 博士后问题:a和b都正确吗?

Sql 博士后问题:a和b都正确吗?,sql,database,postgresql,Sql,Database,Postgresql,对于下面的问题,请使用以下模式定义 餐厅、名称、电话、街道、城市、州、邮编 客户ID、fname、lname、电话、街道、城市、州、邮政编码 CarrierGrid,fname,lname,lp 发货日期、rid、cid、tim、尺寸、重量 皮克皮德,提姆,克里德 是的,蒂姆,克里德 这是一个使用食品载体表的食品配送业务的模式。 顾客在餐厅的餐桌上点餐。 餐馆订了一张送货台;从餐厅向顾客递送食物。 收货台记录开利在餐厅收货的时间。 送料台记录承运商将食物送至客户处的时间 1.查找交付次数少于5次

对于下面的问题,请使用以下模式定义

餐厅、名称、电话、街道、城市、州、邮编 客户ID、fname、lname、电话、街道、城市、州、邮政编码 CarrierGrid,fname,lname,lp 发货日期、rid、cid、tim、尺寸、重量 皮克皮德,提姆,克里德 是的,蒂姆,克里德

这是一个使用食品载体表的食品配送业务的模式。 顾客在餐厅的餐桌上点餐。 餐馆订了一张送货台;从餐厅向顾客递送食物。 收货台记录开利在餐厅收货的时间。 送料台记录承运商将食物送至客户处的时间

1.查找交付次数少于5次的客户

a。选择cid,计数 从交货开始 按cid分组 计数<5

b。选择a.cid,计数 来自客户a 内部连接交付b 使用CID a.cid分组 计数<5

c。选择a.cid,计数 来自客户a 左外联接传递b 在a.cid=b.cid上 a.cid分组 计数<5

d。选择cid,当b.cid不为空时,选择sumcase,然后选择1,否则选择0结束 来自客户a 左外联接传递b 使用cid 按cid分组 当b.cid不为空时,有sumcase,则1,否则0结束<5


e。写下你自己的答案不,它们不正确。他们怀念那些没有送货的顾客

最后一个是一堆不太好的查询中最好的一个。更好的版本是:

select c.cid, count(d.cid)
from customer c left outer join
     delivery d
     on c.cid = d.cid
group by c.cid
having count(d.cid) < 5;
但countd.cid更为简洁


还要注意使用有意义的表别名。不要养成在表格中使用任意字母的习惯。这使得查询很难理解。

哇,非常感谢您的建议!还有帮助!!
count(*) filter (where d.cid is not null)