关系代数 - 表示'having'子句的正确方法是什么?

6 relational-algebra

是的,这是一个家庭作业问题,但名称已经改变,以保护无辜.意思是,我不是要问作业问题本身,而是要求它的一小部分,这样我才能理解整体.

假设你有一个像这样的SQL查询:

- 查询将列出多次出现的汽车价格.

select car_price from cars
group by car_price
having count (car_price) > 1;
Run Code Online (Sandbox Code Playgroud)

关系代数中的一般形式是Y(gl,al)R其中Y是希腊符号,GL是要分组的属性列表,AL是聚合列表

所以关系代数看起来像:

 Y (count(car_price)) cars
Run Code Online (Sandbox Code Playgroud)

那么,在该声明中如何写"有"条款?有简写吗?如果没有,我只需要从那种关系中选择吗?这样的事可能吗?

SELECT (count(car_price) > 1) [Y (count(car_price)) cars]
Run Code Online (Sandbox Code Playgroud)

我已经在网上搜索了几个小时,没有找到将HAVING转换为关系代数的例子.谢谢您的帮助!

小智 2

select count(*) from (select * from cars whereprice > 1) 作为汽车;

也称为关系闭包。