|
Программирование >> Преобразование значений null
Чтобы выбрать самых старших студентов, просто выбираем строки, в которых AGE = OLDEST. Оригинальное решение В оригинальном решении поиск всех студентов, для которых есть старший студент, осуществляется посредством рефлексивного объединения в подзапросе. Внешний запрос возвращает всех студентов таблицы STUDENT, которых нет среди выбранных подзапросом. Эту операцию можно сформулировать как найти всех студентов, которых нет среди тех студентов, которые младше, чем, по крайней мере, один студент : select * from student where age not in (select a.age from student a, student b where a.age < b.age) Подзапрос использует декартово произведение, чтобы найти все возрасты в А, которые меньше, чем все возрасты в В. Единственный возраст, который не будет меньше любого другого, - наибольший. Его подзапрос не возвращает. Во внешнем запросе с помощью оператора NOT IN выбираются все строки таблицы STUDENT, значений AGE которых нет среди значений AGE, возвращенных подзапросом (если возвращается A.AGE, это означает, что в таблице STUDENT есть значение AGE, больше данного). Если есть какие-то трудности с пониманием того, как все это получается, рассмотрим следующий запрос. По сути, оба запроса работают одинаково, но приведенный ниже, наверное, проще: select * from student where age >= all (select age from student) Алфавитный указатель Специальные символы % (остаток от деления), функция (SQL Server), 218, 322, 326 % (подстановка), оператор, 46 + (конкатенация), оператор (SQL Server), 39, 344 (подчеркивание), оператор, 46 (конкатенация), оператор (DB2/ Oracle/PostgreSQL), 39, 343 ADD MONTHS, функция (Oracle), 232, 233,273,315,332 ADDDATE, функция (MySQL), 273, 316, 326, 335 AVG, функция, 197 C CAST, функция (SQL Server), 326 CEIL, функция (DB2/MySQL/Oracle/ PostgreSQL), 443, 444 CEILING, функция (SQL Server), 443, 482 COALESCE, функция, 44, 97, 198, 223, 357 CONCAT, функция (MySQL), 39, 325, 343 CONNECT BY, блок (Oracle) поддержка версиями, 247 CONNECT BY, оператор (Oracle) альтернативы, 516 в иерархических структурах, 519, и вложенные представления, 374 и оператор WITH, 374, 412 поддержка версиями, 302, 329 CONNECT BY ISLEAF, функция (Oracle), 524, 528 CONNECT BY ROOT, функция (Oracle), 524, 528 COUNT OVER, оконная функция, 263, 486, 603 COUNT, функция, 203, 205, 597, 607 CREATE TABLE ... LIKE, команда (DB2), 104 CREATE TABLE, команда, 103 CUBE, расширение, 467, 477 CURRENT DATE, функция (DB2/ MySQL/PostgreSQL), 251, 294, 412 DATE, функция (DB2), 322 DATE ADD, функция (MySQL), 233, 237, 270, 316, 318 DATE FORMAT, функция (MySQL), 237, 251, 276, 340 DATE TRUNC, функция (PostgreSQL), 254, 269, 274, 279, 334 DATEADD, функция (MySQL), 251 DATEADD, функция (SQL Server), 233, 273, 280 DATEDIFF, функция (MySQL/SQL Server), 235, 242, 244, 258, 273 DATENAME, функция (SQL Server), 238, 248, 257, 338, 340 DATEPART, функция (SQL Server), 275, 277, 286, 316, 319 DAY, функция (DB2), 275, 277, 279 DAY, функция (MySQL), 271, 278, 279, DAY, функция (SQL Server), 272, 278, 280 DAYNAME, функция (DB2/MySQL/ SQL Server), 236, 338 DAYOFWEEK, функция (DB2/MYSQL), 293, 339 DAYOFYEAR, функция (DB2/MySQL/ SQL Server), 267, 272, 331, 335, 336 DAYS, функция (DB2), 244, 25S, 272 DB2 значения DATE в операторе ORDER BY, 4S9 специальные рецепты, 23 DECODE, функция (Oracle), 3S6, 562, 5SS DEFAULT VALUES, блок (PostgreSQL/ SQL Server), 101 DEFAULT, ключевое слово, 101 DELETE, команда, 115, 116 DENSE RANK OVER, ранжирующая функция (DB2/Oracle/SQL Server), 390, 400, 551, 552 DENSE RANK, функция (DB2/Oracle/ SQL Server), 3S9, 405, 409 DISTINCT, ключевое слово альтернативы, 63, 401 и список SELECT, 49, 403, 592 применение, 69, S7, 3S9 EXCEPT, функция, 6S, 69, 77, SO EXTRACT, функция (PostgreSQL/ MySQL), 242, 370 GENERATE SERIES, функция (PostgreSQL) альтернативы, 255, 305, 333, 521 использование, 24S параметры, 376 применение, 265, 269, 2S4, 375 GETDATE, функция (SQL Server), 412, 414 GROUP BY, запросы, возвращение столбцов, не вошедших в них, 461 GROUP BY, оператор, 49, 403, 599, 601 GROUPING SETS, расширение (DB2/ Oracle), 471, 473 GROUPING, функция (DB2/Oracle/SQL Server), 463, 464, 477, 49S GROUPING, функция (MySQL/ PostgreSQL), 497 HOUR, функция (DB2), 275 IF-ELSE, операции, 39 INSERT ALL, выражение (Oracle), 105 INSERT FIRST, выражение (Oracle), 105 INSERT, выражение, 100, 103 INSTR, функция (Oracle), 541, 542, 546 INTERSECT, операция, 66, 67 INTERVAL, ключевое слово, 232, 233, 234 IS NULL, оператор, 44 ITERATE, команда (Oracle), 375 ITERATION NUMBER, функция (Oracle), 375 JOIN, оператор в операторе FROM, 65 поддержка Oracle, 370 KEEP, расширение (Oracle), 214, 215, 40S, 409 LAG OVER, оконная функция (Oracle), 354, 366, 367, 397, 39S, 399, 437 LAG, функция (Oracle), 260 LAST, функция (Oracle), 405, 409 LAST DAY, функция (MySQL/Oracle), 265, 266, 27S, 279, 2SS LEAD OVER, оконная функция (Oracle) варианты, 361, 395, 39S, 399 и дубликаты, 360 и рефлексивные объединения, 345, 347, 349, 352 определение временных интервалов, поддержка версиями, 259 преимущества, 260 применение, 352, 354, 394, 395, 397 LEAD, функция (Oracle), 260, 261 LIKE, оператор, 45 LIMIT, оператор (MySQL/PostgreSQL), 41, 379, 3S1 LPAD, функция (Oracle/PostgreSQL/ MySQL), 359, 451 LTRIM, функция (Oracle), 510 MAX OVER, оконная функция, 199,391, 39S, 5S6, 5S7 MAX, функция, 199, 239
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |