Skip to content
opportunity356 edited this page Apr 8, 2016 · 4 revisions

TODO: ответить на следующие вопросы...

  • Какой JOIN выполняется, если не указывать явно JOIN ? SELECT Laptop.model, Product.model FROM Laptop, Product;

Заметки

  1. UNION объединит результаты и оставит только уникальные строки, а UNION ALL просто вернет объединение.
  2. Если в результате выполнения запроса не получено ни одной строки (или ни одной строки для данной группы), то исходные данные для вычисления любой из агрегатных функций отсутствуют. В этом случае результатом выполнения функций COUNT будет нуль, а результатом всех других функций — NULL. Например, sql SELECT 1 a WHERE EXISTS(SELECT MAX(price) FROM PC WHERE price<0) вернёт 1
  3. Внутри аггрегатных функций можно использовать DISTINCT, например Count(distinct p.type)
  4. MIN и MAX сортируют числовые данные, как числа, а строки, как строки. Поэтому следующую задачу
    "Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа. Вывести: maker, type" можно решить вот так: sql Select maker,min(type) from Product group by maker having count(1)> 1 and min(type)=max(type)
Clone this wiki locally