Jak zastąpic EXIST klauzulą IN? Zadanie do rozwiązania

0

Hej. Mam takie zadanie (poniżej), w którym mam uzyć IN i nie używac EXIST. Napisałam zapytanie ale niestety nie działa. Czy ktoś może zerknąc czemu moje zapytanie jest błędne i podac prawidłowe rozwiązanie:

MOJE ZAPYTANIE NIE DZIAŁA:

WITH special_sales AS (SELECT * FROM sales where price>90)
SELECT *
FROM departments d
JOIN sales s ON d.id=s.department_id
WHERE d.id IN (SELECT department_id FROM special sales)
Group BY d.id;

ZWRACA BŁĄD:

There was an error with the SQL query:

PG::UndefinedTable: ERROR:  relation "special" does not exist
LINE 6: WHERE d.id IN (SELECT department_id FROM special sales)

A OTO ZADANIE

For this challenge you need to create a SELECT statement, this SELECT statement will use an IN to check whether a department has had a sale with a price over 90.00 dollars BUT the sql MUST use the WITH statement which will be used to select all columns from sales where the price is greater than 90.00, you must call this sub-query special_sales.

departments table schema
id
name
sales table schema
id
department_id (department foreign key)
name
price
card_name
card_number
transaction_date
resultant table schema
id
name
1

@Tomek Pycia: ma racje, w treści zadania masz special_sales "zgubiałaś" podkreślenie.

0
Panczo napisał(a):

@Tomek Pycia: ma racje, w treści zadania masz special_sales "zgubiałaś" podkreślenie.

OK rzeczywiście, popraiwłam, ale nadal jest błąd. Zadanie ma zwracać 5 rekordów a mi zwrca 100 :( Nie wiem czemu,ale zwraca mi rekordy w których cena (price) jest mniejsza niż 90. Wiecie może dlaczego?

0

Bo ten join z sales jest zupełnie niepotrzebny:

WITH special_sales AS (
SELECT 
    * 
FROM 
     sales where price>90
)
SELECT 
     *
FROM 
    departments d
WHERE 
    d.id IN (SELECT department_id FROM special_sales)

1 użytkowników online, w tym zalogowanych: 0, gości: 1