поэтому проблема, которая у меня есть, заключается в том, что я не уверен, почему ответ на эту проблему - нет.
Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)
как схема.
Я понимаю, что в Q7 он выбирает все x.did вместе со счетчиком, у которого год больше 2010, а затем группирует по X.did. Для Q8 он должен выбрать количество всех x.did, которые имеют x.did и год > 2010 вместе с x.did.
Я не совсем понимаю, почему эти запросы разные, и я был бы признателен за любую помощь в понимании этого!
В Q8 нет условия Year > 2000 во внешнем WHERE предложении, поэтому результат будет другим.






Ну, первый выбирает только строки, где год больше 2010. Второй просто извлекает все строки, независимо от года. Счетчик будет равен 0 для всех строк с годом, меньшим или равным 2010. В первом GROUP BY также имеет эффект, что в результате did уникален. Во втором случае это не обязательно. Если did не уникален в таблице, он не уникален и в результате.
Они совсем не похожи.
where.X.did есть дубликаты. Первый выбирает только одну строку на X.did.Существуют очень узкие обстоятельства, когда они возвращают один и тот же набор результатов. Вы должны подумать о том, какие данные сделают это возможным.
Я предполагаю, что в WorksOn может быть много строк для каждого
did. Q7 возвращает только одну строку для каждого отдельногоdid, группируя их. Но Q8 возвращает все строки WorksOn.