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

Jak zastąpic EXIST klauzulą IN? Zadanie do rozwiązania
Paula Ka
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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:

Kopiuj
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:

Kopiuj
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

Kopiuj
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
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

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

Paula Ka
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

Bo ten join z sales jest zupełnie niepotrzebny:

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.