Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.62 KB | None | 0 0
  1. --2.1
  2.  
  3. /*
  4. 1. Выполнить запрос, который получает:
  5. - фамилии сотрудников
  6. - E-mail адреса сотрудников в полном формате: значение атрибута E-mail +
  7. "@Netcracker.com"
  8. */
  9.  
  10. SELECT last_name, email || '@Netcracker.com' FROM employees;
  11.  
  12. /*
  13. LAST_NAME EMAIL||'@NETCRACKER.COM'
  14. ------------------------- ------------------------
  15. King SKING@Netcracker.com
  16. Kochhar NKOCHHAR@Netcracker.com
  17. De Haan LDEHAAN@Netcracker.com
  18. Hunold AHUNOLD@Netcracker.com
  19. Ernst BERNST@Netcracker.com
  20. Austin DAUSTIN@Netcracker.com
  21. Pataballa VPATABAL@Netcracker.com
  22. Lorentz DLORENTZ@Netcracker.com
  23. */
  24.  
  25. /*
  26. 2.1. Построить логический план запроса, который получает:
  27. - фамилию сотрудника;
  28. - E-mail сотрудника;
  29. - зарплату сотрудника за последние три месяца с учетом комиссионных.
  30. */
  31. select last_name, email, (salary + nvl(commission_pct,0))*3 as salary from employees;
  32. /*
  33. LAST_NAME EMAIL SALARY
  34. ------------------------- ------------------------- ----------
  35. King SKING 72000
  36. Kochhar NKOCHHAR 51000
  37. De Haan LDEHAAN 51000
  38. Hunold AHUNOLD 27000
  39. Ernst BERNST 18000
  40. Austin DAUSTIN 14400
  41. Pataballa VPATABAL 14400
  42. Lorentz DLORENTZ 12600
  43. Greenberg NGREENBE 36000
  44. Faviet DFAVIET 27000
  45. Chen JCHEN 24600
  46. */
  47.  
  48. /*
  49. 2.2. Построить логический план запроса, который получает:
  50. - название подразделения;
  51. - подразделением управляет менеджер с идентификатором = 114
  52. */
  53. select department_name from departments where manager_id=114;
  54. /*
  55. DEPARTMENT_NAME
  56. ------------------------------
  57. Purchasing
  58. */
  59.  
  60. /*
  61. 2.3. Построить логический план запроса, который получает:
  62. - фамилию сотрудников;
  63. - выплаченную зарплату сотрудников за весь период работы (для расчета месяцев работы
  64. использовать функцию округления дробных чисел в меньшую сторону - round);
  65. - выплаченная зарплата сотрудников за весь период работы должна быть в диапазоне от
  66. 50000$ до 100000$.
  67. */
  68. select last_name, (salary + nvl(commission_pct,0))*round((current_date-hire_date)/30) as salary from employees
  69. where (salary + nvl(commission_pct,0))*round((current_date-hire_date)/30) BETWEEN 50000 and 100000;
  70. /*
  71. no rows selected
  72. */
  73.  
  74. /*
  75. 2.4. Построить логический план запроса, который получает:
  76. - фамилию сотрудников;
  77. - сотрудники работают в подразделении с идентификатором = 90;
  78. - зарплата находится в диапазоне от 5000$ до 10000$
  79. */
  80. select last_name from employees where department_id=90 and salary BETWEEN 5000 and 10000;
  81. /*
  82. no rows selected
  83. */
  84.  
  85. --2.2
  86.  
  87. /*
  88. 1. Выполнить запрос, который получает для каждого сотрудника cтроку в формате
  89. 'Dear '+A+ ' ' + B + ’! ' + ‘ Your salary = ‘ + C,
  90. где A = {‘Mr.’,’Mrs.’} – сокращенный вариант обращения к мужчине или женщине
  91. (предположить, что женщиной являются все сотрудницы, имя которых заканчивается на букву
  92. ‘a’ или ‘e’)
  93. B – фамилия сотрудника;
  94. C – годовая зарплата с учетом комиссионных сотрудника
  95. */
  96.  
  97. SELECT ('Dear Mrs.' || ' ' || last_name || '!') as name, ('Your salary=' || (salary + nvl(commission_pct,0))*12) as salary FROM employees where first_name LIKE '%a' OR first_name LIKE '%e'
  98. UNION
  99. SELECT ('Dear Mr.' || ' ' || last_name || '!') as name, ('Your salary=' || (salary + nvl(commission_pct,0))*12) as salary FROM employees where first_name NOT LIKE '%a' OR first_name NOT LIKE '%e';
  100.  
  101. /*
  102. NAME SALARY
  103. ------------------------------------ ----------------------------------------------------
  104. Dear Mr. Abel! Your salary=132003,6
  105. Dear Mr. Ande! Your salary=76801,2
  106. Dear Mr. Atkinson! Your salary=33600
  107. Dear Mr. Austin! Your salary=57600
  108. Dear Mr. Baer! Your salary=120000
  109. Dear Mr. Baida! Your salary=34800
  110. Dear Mr. Banda! Your salary=74401,2
  111. Dear Mr. Bates! Your salary=87601,8
  112. Dear Mr. Bell! Your salary=48000
  113. Dear Mr. Bernstein! Your salary=114003
  114. Dear Mr. Bissot! Your salary=39600
  115. */
  116.  
  117.  
  118. --2.3
  119.  
  120. /*
  121. 1. Построить логический план запроса, который получает:
  122. - фамилию сотрудников;
  123. - названия подразделения, в котором работает сотрудник;
  124. - название города, в котором работает сотрудник.
  125. */
  126. select last_name, department_name, city from employees inner join
  127. departments on employees.department_id = departments.department_id inner join
  128. locations on departments.location_id = locations.location_id;
  129. /*
  130. LAST_NAME DEPARTMENT_NAME CITY
  131. ------------------------- ------------------------------ ------------------------------
  132. King Executive Seattle
  133. Kochhar Executive Seattle
  134. De Haan Executive Seattle
  135. Hunold IT Southlake
  136. Ernst IT Southlake
  137. Austin IT Southlake
  138. Pataballa IT Southlake
  139. Lorentz IT Southlake
  140. Greenberg Finance Seattle
  141. Faviet Finance Seattle
  142. Chen Finance Seattle
  143. */
  144.  
  145. /*
  146. 2. Построить логический план запроса, который получает:
  147. - фамилию сотрудников,
  148. - названия подразделений;
  149. - подразделения расположены в городе = Seattle.
  150. */
  151. select last_name, department_name from employees inner join
  152. departments on employees.department_id = departments.department_id inner join
  153. locations on departments.location_id = locations.location_id
  154. where city = 'Seattle';
  155. /*
  156. LAST_NAME DEPARTMENT_NAME
  157. ------------------------- ------------------------------
  158. Whalen Administration
  159. Colmenares Purchasing
  160. Himuro Purchasing
  161. Tobias Purchasing
  162. Baida Purchasing
  163. Khoo Purchasing
  164. Raphaely Purchasing
  165. De Haan Executive
  166. Kochhar Executive
  167. King Executive
  168. Popp Finance
  169. */
  170.  
  171. /*
  172. 3. Построить логический план запроса, который получает:
  173. - фамилию сотрудников;
  174. - название должности сотрудников;
  175. - сотрудники работают в городе = Toronto.
  176. */
  177. select last_name, job_title from employees inner join
  178. jobs on employees.job_id = jobs.job_id inner join
  179. departments on employees.department_id = departments.department_id inner join
  180. locations on departments.location_id = locations.location_id
  181. where city = 'Toronto';
  182. /*
  183. LAST_NAME JOB_TITLE
  184. ------------------------- -----------------------------------
  185. Hartstein Marketing Manager
  186. Fay Marketing Representative
  187. */
  188.  
  189. /*
  190. 4. Построить логический план запроса, который:
  191. - получает фамилию, название должности сотрудников;
  192. - зарплата сотрудника должна попадать в диапазон минимальной и максимальной зарплат,
  193. установленных в справочнике должностей.
  194. */
  195. select last_name, job_title from employees inner join
  196. jobs on employees.job_id = jobs.job_id
  197. where salary between min_salary and max_salary;
  198. /*
  199. LAST_NAME JOB_TITLE
  200. ------------------------- -----------------------------------
  201. Hartstein Marketing Manager
  202. Fay Marketing Representative
  203. King President
  204. Kochhar Administration Vice President
  205. De Haan Administration Vice President
  206. Hunold Programmer
  207. Ernst Programmer
  208. Austin Programmer
  209. */
  210.  
  211. /*
  212. 5. Построить логический план запроса, который получает номер и фамилию сотрудника,
  213. номер и фамилию его менеджера.
  214. */
  215. Select a.employee_id, a.last_name, a.manager_id, b.last_name
  216. from Employees A
  217. inner join Employees B
  218. on a.manager_id = b.employee_id
  219. /*
  220. EMPLOYEE_ID LAST_NAME MANAGER_ID LAST_NAME
  221. ----------- ------------------------- ---------- -------------------------
  222. 201 Hartstein 100 King
  223. 149 Zlotkey 100 King
  224. 148 Cambrault 100 King
  225. 147 Errazuriz 100 King
  226. 146 Partners 100 King
  227. 145 Russell 100 King
  228. 124 Mourgos 100 King
  229. 123 Vollman 100 King
  230. 122 Kaufling 100 King
  231. 121 Fripp 100 King
  232. 120 Weiss 100 King
  233. */
  234.  
  235. /*
  236. 6. Построить логический план запроса, который:
  237. - получает номер и название подразделений;
  238. - подразделения расположены в стране = Denmark;
  239. - в подразделениях не должно быть сотрудников.
  240. */
  241. select departments.department_id, department_name from departments inner join
  242. locations on departments.location_id = locations.location_id inner join
  243. countries on countries.country_id = locations.country_id inner join
  244. employees on employees.department_id = departments.department_id
  245. where countries.country_name='Denmark'
  246. GROUP BY department_name, departments.department_id
  247. HAVING COUNT(employees.employee_id)=0;
  248. /*
  249. no rows selected
  250. */
  251.  
  252. /*
  253. 7. Построить логический план запроса, который:
  254. - получает названия стран;
  255. - страны расположены в регионе = Europe;
  256. - в указанных странах не должно быть сотрудников.
  257. */
  258. select countries.country_name from countries inner join
  259. regions on regions.region_id = countries.region_id inner join
  260. locations on locations.country_id = countries.country_id inner join
  261. departments on departments.location_id = locations.location_id inner join
  262. employees on employees.department_id = departments.department_id
  263. where regions.region_name = 'Europe'
  264. group by countries.country_name
  265. HAVING COUNT(employees.employee_id) = 0;
  266. /*
  267. no rows selected
  268. */
  269.  
  270.  
  271. --2.4
  272.  
  273. /*
  274. 1. Выполнить запрос, который получает:
  275. - кол-во сотрудников в каждом подразделении;
  276. - кол-во сотрудников не должно быть меньше 2;
  277. */
  278. SELECT COUNT(*) FROM employees GROUP BY department_id having COUNT(department_id) > 2;
  279. /*
  280. COUNT(*)
  281. ----------
  282. 6
  283. 6
  284. 3
  285. 45
  286. 34
  287. 5
  288. */
  289.  
  290. /*
  291. 2. Выполнить запрос, который получает:
  292. - названия должностей;
  293. - среднюю зарплату по должности;
  294. - должность должна быть связана с управлением, т.е. содержать слово Manager;
  295. - средняя зарплата не должна быть менее 10 тысяч.
  296. */
  297. select job_title, avg((max_salary+min_salary)/2) from jobs where job_title like '%Manager%' group by job_title HAVING avg((max_salary+min_salary)/2) > 10000;
  298. /*
  299. JOB_TITLE AVG((MAX_SALARY+MIN_SALARY)/2)
  300. ----------------------------------- ------------------------------
  301. Accounting Manager 12100
  302. Finance Manager 12100
  303. Purchasing Manager 11500
  304. Sales Manager 15000
  305. Marketing Manager 12000
  306. */
  307.  
  308. /*
  309. 3. Выполнить запрос, который получает:
  310. - кол-во сотрудников в каждом подразделении;
  311. - последней строкой ответа на запрос должно быть общее кол-во сотрудников.
  312. */
  313. SELECT COUNT(*) FROM employees GROUP BY department_id
  314. UNION all
  315. SELECT COUNT(*) FROM employees
  316. /*
  317. COUNT(*)
  318. ----------
  319. 6
  320. 6
  321. 1
  322. 3
  323. 2
  324. 1
  325. 2
  326. 45
  327. 34
  328. 1
  329. 5
  330. 1
  331. 107
  332. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement