916 views
Consider a relation examinee (regno, name, score), where regno is the primary key to score is a real number.

Write a relational algebra using $( \Pi, \sigma, \rho, \times)$ to find the list of names which appear more than once in examinee.
edited | 916 views
0
Can anyone please post SQL query for this?
+1

equivalent SQL query :-

select e1.name

from examine e1

where exist ( select *

from examine e2

where e1.regno ≠ e2.regno and e1.name = e2.name );
0
Thank you

$\pi_{\text{exm1.name}}(σ_{(\text{exm1.regno} \neq \text{examinee.regno}) \wedge (\text{emp1.name} = \text{emp2.name}) })(ρ _{\text{exm1}}(\text{examinee}) \times \text{examinee})$
answered by Loyal (10k points)
edited by
+3
Isn't the 2nd answer opposite to what the question is asking?
0
Those who are looking a query 1 with a :O face, the conditions are written for cross product beneath the 'X' symbol that is not a separate line. Also please someone confirms if 'σ" is needed there while writing conditions, I don't think so that it was needed.

Instead of the cross product, we can use condition join with same conditions.
+3
IN clause in oracle has a limit of maximum 1000 values that can be compared at a time.

In that case, query using natural join can help
0
We also can write it as

Select name from Examinee where not exists (Select distinct name from Examinee);
0
What is emp2 ?

It should be examinee.name
+1 vote

1) $\Pi_{name}\left ( \sigma _{count(cnt)>1}\left ( _{name}g_{count(regno)\ as \ cnt}\left ( examinee \right ) \right ) \right )$

2) $SELECT_{regno}FROM\;examinee\; HAVING\;(score>avg(score))$

$\Pi _{regno}\left ( \sigma _{score>avg(score)}\left ( examinee \right ) \right )$

3) $SELECT_{centr\_code}FROM\;examinee\;join\;appears WHERE\;(score>80)$

$\Pi _{center\_code}\left ( \sigma _{score>80}\left ( examinee\Join appears \right ) \right )$

answered by Active (3.3k points)
edited by
+4
you shouldn't use aggregate functions in where clause
0
you are right @Yashaswini. I accept it. I am changing it. and for other readers' concern in case you don't kno, i am just stating here that, "aggregate function can not be used with WHERE clause where it is a main query, let say outer query. We should use HAVING clause for it. but an interesting rule is, aggregate function can be used with WHERE clause if this WHERE belong to the sub-query or nested-query."
+2
Having can't be used without group by, this way in the second query.
0

I dont think so standard relational algebra allows aggregate functions.

0

2.

​​​​​​

1
–1 vote
2