CSE-132 / hw_1 / hw_1_query.pdf
hw_1_query.pdf
Raw
-- Question 1
SELECT DISTINCT c.name
    FROM 
        customer as c, 
        borrower as b, 
        loan as l
    WHERE 
        c.name = b.cname AND 
        b.lno = l.no AND 
        l.type= 'jumbo mortgage'

-- Question 2 
SELECT c.name
    FROM
        customer as c,
        borrower as b,
        loan as l
    WHERE 
        c.name = b.cname AND 
        b.lno = l.no AND 
        (l.type= 'jumbo mortgage' OR 
        c.credit >= 750)
    GROUP BY 
        c.name

-- Question 3 
SELECT DISTINCT
    c.name
FROM 
    customer AS c, 
    borrower as b, 
    loan as l,
    (SELECT in_c.name as "name"
        FROM 
            customer as in_c, 
            borrower as in_b, 
            loan as in_l 
        WHERE 
            in_c.name = in_b.cname AND
            in_b.lno = in_l.no AND 
            in_l.type = 'student') as inner_q
WHERE 
    inner_q.name = c.name AND 
    c.name = b.cname AND 
    b.lno = l.no AND 
    l.type = 'jumbo mortgage'

-- Question 4
SELECT c.name
    FROM
        customer as c
    WHERE 
        (
        SELECT 
            COUNT(*) as num_loan
        FROM
            borrower as in_b,
            loan as in_l 
        WHERE 
            c.name = in_b.cname AND 
            in_b.lno = in_l.no
        ) = (
        SELECT 
            COUNT(*)
        FROM loan
        )



-- Question 5 
SELECT c.name
    FROM
        customer as c
    WHERE 
        (
        SELECT
            COUNT(in_l.no)
        FROM loan as in_l
        WHERE type IN ('jumbo mortgage', 'student')
        ) = (
        SELECT 
            COUNT(in_lb.no)
        FROM 
            loan as in_lb,
            borrower as in_bor
        WHERE 
            c.name = in_bor.cname AND
            in_bor.lno = in_lb.no AND
            in_lb.type IN ('jumbo mortgage', 'student')
        )


-- Question 6 
SELECT c.name
    FROM
        customer as c
    WHERE 
        (
        SELECT 
            COUNT(in_l.no)
        FROM loan as in_l
        WHERE type IN ('jumbo mortgage')
        ) = (
        SELECT 
            COUNT(in_lb.no)
        FROM
            loan as in_lb,
            borrower as in_bor
        WHERE 
            c.name = in_bor.cname AND
            in_bor.lno = in_lb.no AND
            in_lb.type IN ('jumbo mortgage')
        ) OR (
        SELECT
            COUNT(in_l.no)
        FROM loan as in_l
        WHERE type IN ('student')
        ) = (
        SELECT 
            COUNT(in_lb.no)
        FROM
            loan as in_lb,
            borrower as in_bor
        WHERE 
            c.name = in_bor.cname AND
            in_bor.lno = in_lb.no AND
            in_lb.type IN ('student')
        )


-- Question 7
SELECT * 
FROM(
    SELECT
        b1.cname as "name1",
        b2.cname as "name2"
    FROM
        borrower as b1,
        borrower as b2
    WHERE 
        b1.cname != b2.cname AND
        b1.lno = b2.lno 
) as in_q
WHERE 
    in_q.name1 > in_q.name2 

-- Question 8 
SELECT 
    l.no 
FROM    
    loan as l
WHERE 
    (
    SELECT
        COUNT(in_c.name) 
    FROM 
        customer as in_c,
        borrower as in_b,
        loan as in_l 
    WHERE 
        in_c.name = in_b.cname AND 
        in_b.lno = in_l.no AND 
        in_l.no = l.no
    ) >= 2

-- Question 9 
SELECT l.no
FROM 
    customer as c
    INNER JOIN borrower as b ON(c.name = b.cname)
    INNER JOIN loan as l ON(b.lno = l.no)
WHERE 
    c.name = 'Smith'
    AND l.minCredit >= (
        SELECT
            MAX(minCredit)
        FROM
            loan as in_l,
            customer as in_c,
            borrower as in_b
        WHERE 
            in_c.name = in_b.cname AND
            in_b.lno = in_l.no AND
            in_c.name = 'Smith')
GROUP BY l.no 

-- Question 10
SELECT 
    l.no 
FROM
    loan as l 
WHERE 
    (SELECT COUNT(*) FROM customer WHERE credit < 600) =
        (SELECT 
            COUNT(in_c.name)
        FROM 
            customer as in_c 
            INNER JOIN borrower as in_b ON(in_c.name = in_b.cname)
            INNER JOIN loan as in_l ON(in_b.lno = in_l.no) 
        WHERE 
            in_l.no = l.no AND
            in_c.credit < 600
        )