Рубрики

ВОРОТА | GATE CS 2012 | Вопрос 15

Какие из следующих утверждений являются ИСТИННЫМИ о запросе SQL?
P: SQL-запрос может содержать предложение HAVING, даже если у него нет предложения GROUP BY
Q: SQL-запрос может содержать предложение HAVING, только если у него есть предложение GROUP BY
R: Все атрибуты, используемые в предложении GROUP BY, должны появляться в предложении SELECT
S: Не все атрибуты, используемые в предложении GROUP BY, должны появляться в предложении SELECT

(А) Р и Р
(B) P и S
(С) Q и R
(D) Q и S

Ответ: (Б)
Объяснение: В соответствии со стандартным ответом SQL должна быть опция (C), которая является ключом ответа, предоставленным полномочиями GATE.

Если мы говорим о различных реализациях SQL, таких как MySQL, то вариант (B) также подходит. Но речь идет о стандартном SQL, а не о реализации. Например, ниже приведен

P является правильным в большинстве реализаций. Предложение HAVING также можно использовать с агрегатной функцией. Если мы используем предложение HAVING без предложения GROUP BY, условие HAVING применяется ко всем строкам, которые удовлетворяют условию поиска. Другими словами, все строки, которые удовлетворяют условию поиска, составляют одну группу. Смотрите это для более подробной информации.

S правильно. Чтобы проверить S, попробуйте выполнить следующие запросы в SQL.

CREATE TABLE temp 
  ( 
     id   INT, 
     name VARCHAR(100) 
  ); 

INSERT INTO temp VALUES (1, "abc"); 
INSERT INTO temp VALUES (2, "abc"); 
INSERT INTO temp VALUES (3, "bcd"); 
INSERT INTO temp VALUES (4, "cde"); 

SELECT Count(*) 
FROM   temp 
GROUP  BY name; 

Выход:

count(*)
--------
2
1
1

Альтернативный способ —

Утверждение (P) «SQL-запрос может содержать предложение HAVING, даже если в нем нет предложения GROUP BY» правильно, поскольку параметр Caluse применяется после фазы агрегации и должен использоваться, если вы хотите отфильтровать результаты агрегирования, а параметр «Не имеет» Требуется условие Group By. Предложение HAVING без предложения GROUP BY является допустимым и (возможно) полезным синтаксисом в стандартном SQL. Рассмотрите этот пример, который является допустимым Стандартным SQL:

 ВЫБЕРИТЕ 'T' КАК РЕЗУЛЬТАТ
ОТ книги
ХОТЯ МИН (NumberOfPages)

Утверждение (S) «Не все атрибуты, используемые в предложении GROUP BY, должны присутствовать в предложении SELECT» является правильным, но если мы должны использовать предложение Group By, то существуют ограничения на то, что мы можем поместить в предложение Select.

Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE CS 2012 | Вопрос 15

0.00 (0%) 0 votes