Advertisement
ExcelStore

Расширенные возможности SQL. Команд SQL в рамках урока #6

Feb 22nd, 2021 (edited)
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.04 KB | None | 0 0
  1. -- Условные операторы и функции в SQL (NULLIF, NVL, NVL2, DECODE, CASE)
  2. -- https://youtu.be/Gl2o4d6kqSM
  3.  
  4. -------------------------------------------
  5. -- Расширенные возможности SQL. Примеры команд SQL в рамках урока #6.
  6.  
  7.  
  8. SELECT NULLIF(5, 2) AS RESULT FROM DUAL;
  9. SELECT NULLIF(5, 5) AS RESULT FROM DUAL;
  10.  
  11.  
  12. SELECT NULLIF('март', 'апрель') AS RESULT FROM DUAL;
  13. SELECT NULLIF('апрель', 'апрель') AS RESULT FROM DUAL;
  14.  
  15.  
  16. SELECT nvl(NULL, 'ваше значение') AS RESULT FROM DUAL;
  17. SELECT nvl('тест', 'ваше значение') AS RESULT FROM DUAL;
  18.  
  19.  
  20. SELECT LOCATION_ID, CITY, STATE_PROVINCE, nvl(STATE_PROVINCE, 'штат не определен') AS CHECK_NULL
  21. FROM LOCATIONS
  22. WHERE LOCATION_ID <= 1500
  23. ;
  24.  
  25.  
  26. SELECT a.EMPLOYEE_ID, a.DEPARTMENT_ID, b.DEPARTMENT_NAME, nvl(b.DEPARTMENT_NAME, 'Administration')
  27. FROM
  28.    EMPLOYEES a
  29.    LEFT OUTER JOIN DEPARTMENTS b ON a.DEPARTMENT_ID = b.DEPARTMENT_ID
  30. WHERE a.EMPLOYEE_ID IN (108, 178, 205, 206)
  31. ;
  32.  
  33.  
  34. SELECT a.EMPLOYEE_ID, a.DEPARTMENT_ID, b.DEPARTMENT_NAME, nvl(b.DEPARTMENT_NAME, c.DEPARTMENT_NAME)
  35. FROM
  36.    EMPLOYEES a
  37.    LEFT OUTER JOIN DEPARTMENTS b ON a.DEPARTMENT_ID = b.DEPARTMENT_ID
  38.    LEFT OUTER JOIN KMV_EMPLOYEES c ON a.EMPLOYEE_ID = c.EMPLOYEE_ID
  39. WHERE a.EMPLOYEE_ID IN (108, 178, 205, 206)
  40. ;
  41.  
  42.  
  43. SELECT nvl2(NULL, 'значение известно', 'значение не определено') AS RESULT FROM DUAL;
  44. SELECT nvl2('тест', 'значение известно', 'значение не определено') AS RESULT FROM DUAL;
  45.  
  46.  
  47. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, COMMISSION_PCT, nvl2(COMMISSION_PCT, SALARY, SALARY * 2) AS RESULT
  48. FROM EMPLOYEES
  49. WHERE EMPLOYEE_ID BETWEEN 177 AND 183
  50. ;
  51.  
  52.  
  53. SELECT
  54.     DEPARTMENT_ID,
  55.     decode(DEPARTMENT_ID, 10, 'Administration') AS DEP_NAME          
  56. FROM DEPARTMENTS
  57. WHERE DEPARTMENT_ID <= 50
  58. ;
  59.  
  60.  
  61. SELECT
  62.     DEPARTMENT_ID,
  63.     decode(DEPARTMENT_ID, 10, 'Administration', 'Marketing') AS DEP_NAME                        
  64. FROM DEPARTMENTS
  65. WHERE DEPARTMENT_ID <= 50
  66. ;
  67.  
  68.  
  69. SELECT
  70.     DEPARTMENT_ID,
  71.     decode(DEPARTMENT_ID,
  72.         10, 'Administration',
  73.         20, 'Marketing',
  74.         30, 'Purchasing',
  75.         40, 'Human Resources',
  76.         50, 'Shipping'
  77.         ) AS DEP_NAME          
  78. FROM DEPARTMENTS
  79. WHERE DEPARTMENT_ID <= 50
  80. ;
  81.  
  82.  
  83. SELECT
  84.     DEPARTMENT_ID,
  85.     decode(DEPARTMENT_ID, 10, 'Administration', 20, 'Marketing', 30, 'Purchasing', 40, 'Human Resources', 50, 'Shipping') AS DEP_NAME        
  86. FROM DEPARTMENTS
  87. WHERE DEPARTMENT_ID <= 50
  88. ;
  89.  
  90.  
  91. SELECT
  92.     DEPARTMENT_ID,
  93.     decode(DEPARTMENT_ID,
  94.         10, 'Administration',
  95.         20, 'Marketing',
  96.         30, 'Purchasing',
  97.         40, 'Human Resources',
  98.         50, 'Shipping',
  99.         'Marketing'
  100.         ) AS DEP_NAME          
  101. FROM DEPARTMENTS
  102. WHERE DEPARTMENT_ID <= 80
  103. ;
  104.  
  105.  
  106. SELECT
  107.     DEPARTMENT_ID,
  108.     decode(DEPARTMENT_ID,
  109.         10, 'Administration',
  110.         20, 'Marketing',
  111.         30, 'Purchasing',
  112.         40, 'Human Resources',
  113.         50, 'Shipping',
  114.         'Marketing'
  115.         ) AS DEP_NAME,
  116.     CASE DEPARTMENT_ID
  117.         WHEN 10 THEN 'Administration'
  118.         WHEN 20 THEN 'Marketing'
  119.         WHEN 30 THEN 'Purchasing'
  120.         WHEN 40 THEN 'Human Resources'
  121.         WHEN 50 THEN 'Shipping'
  122.         ELSE 'Marketing'
  123.     END AS DEP_NAME_2
  124. FROM DEPARTMENTS
  125. WHERE DEPARTMENT_ID <= 80
  126. ;
  127.  
  128.  
  129. SELECT
  130.     DEPARTMENT_ID,
  131.     CASE
  132.         WHEN DEPARTMENT_ID = 10 THEN 'Administration'
  133.         WHEN DEPARTMENT_ID = 20 THEN 'Marketing'
  134.         WHEN DEPARTMENT_ID = 30 THEN 'Purchasing'
  135.         WHEN DEPARTMENT_ID = 40 THEN 'Human Resources'
  136.         WHEN DEPARTMENT_ID = 50 THEN 'Shipping'
  137.         ELSE 'Marketing'
  138.     END AS DEP_NAME
  139. FROM DEPARTMENTS
  140. WHERE DEPARTMENT_ID <= 80
  141. ;
  142.  
  143.  
  144. SELECT
  145.     DEPARTMENT_ID,
  146.     CASE
  147.         WHEN DEPARTMENT_ID = 10 THEN 'Administration'
  148.         WHEN DEPARTMENT_ID BETWEEN 20 AND 29 THEN 'Marketing'
  149.         WHEN DEPARTMENT_ID LIKE '%30%' THEN 'Purchasing'
  150.         WHEN DEPARTMENT_ID IN (40, 50) THEN 'Human Resources'
  151.         ELSE 'Marketing'
  152.     END AS DEP_NAME
  153. FROM DEPARTMENTS
  154. WHERE DEPARTMENT_ID <= 80
  155. ;
  156.  
  157.  
  158. SELECT
  159.     DEPARTMENT_ID,
  160.     CASE
  161.         WHEN DEPARTMENT_ID = 10 AND MANAGER_ID <= 200 THEN 'Administration'
  162.         WHEN DEPARTMENT_ID BETWEEN 20 AND 29 THEN 'Marketing'
  163.         WHEN DEPARTMENT_ID LIKE '%30%' OR LOCATION_ID > 1500 THEN 'Purchasing'
  164.         WHEN DEPARTMENT_ID IN (40, 50) THEN 'Human Resources'
  165.         ELSE 'Marketing'
  166.     END AS DEP_NAME
  167. FROM DEPARTMENTS
  168. WHERE DEPARTMENT_ID <= 80
  169. ;
  170.  
  171.  
  172. SELECT
  173.     DEPARTMENT_ID,
  174.     CASE WHEN DEPARTMENT_ID = 10 THEN 'Administration' ELSE 'Marketing' END AS DEP_NAME
  175. FROM DEPARTMENTS
  176. WHERE DEPARTMENT_ID <= 80
  177. ;
  178.  
  179.  
  180. SELECT
  181.     DEPARTMENT_ID,
  182.     CASE
  183.         WHEN DEPARTMENT_ID = 10 THEN
  184.              CASE WHEN MANAGER_ID < 500 THEN 'Administration' ELSE 'Marketing' END
  185.         ELSE 'Marketing'
  186.     END AS DEP_NAME
  187. FROM DEPARTMENTS
  188. WHERE DEPARTMENT_ID <= 80
  189. ;
  190.  
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement