Advertisement
YavorGrancharov

Data Aggregation - Exercises

Oct 15th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.75 KB | None | 0 0
  1. 01. Records’ Count
  2. SELECT COUNT(*) FROM wizzard_deposits;
  3. --------------
  4. 02. Longest Magic Wand
  5. SELECT MAX(`magic_wand_size`) AS `longest magic wand`
  6. FROM `wizzard_deposits`;
  7. ----------------
  8. 03. Longest Magic Wand per Deposit Groups
  9. SELECT deposit_group,MAX(`magic_wand_size`) AS `longest magic wand`
  10. FROM `wizzard_deposits` GROUP BY deposit_group
  11. ORDER BY `longest magic wand`,deposit_group ASC;
  12. -------------------
  13. 04. Smallest Deposit Group per Magic Wand Size
  14. SELECT deposit_group
  15. FROM `wizzard_deposits`
  16. GROUP BY deposit_group
  17. ORDER BY AVG(`magic_wand_size`)
  18. LIMIT 1;
  19. ----------------
  20. 05. Deposits Sum
  21. SELECT `deposit_group`,SUM(`deposit_amount`) AS `total_sum`
  22. FROM `wizzard_deposits` GROUP BY deposit_group
  23. ORDER BY total_sum ASC;
  24. --------------------
  25. 06. Deposits Sum for Ollivander Family
  26. SELECT `deposit_group`,SUM(`deposit_amount`) AS `total_sum`
  27. FROM `wizzard_deposits` WHERE `magic_wand_creator` LIKE 'Ollivander family'
  28. GROUP BY deposit_group
  29. ORDER BY deposit_group ASC;
  30. ------------------
  31. 07. Deposits Filter
  32. SELECT `deposit_group`,SUM(`deposit_amount`) AS `total_sum`
  33. FROM `wizzard_deposits` WHERE `magic_wand_creator` LIKE 'Ollivander family'
  34. GROUP BY deposit_group
  35. HAVING total_sum < 150000
  36. ORDER BY total_sum DESC;
  37. --------------
  38. 08. Deposit Charge
  39. SELECT deposit_group,magic_wand_creator,MIN(deposit_charge) AS
  40. `min_deposit_charge` FROM `wizzard_deposits` GROUP BY deposit_group,
  41. magic_wand_creator ORDER BY magic_wand_creator ASC,deposit_group ASC;
  42. ------------------
  43. 09. Age Groups
  44. SELECT
  45. CASE
  46.     WHEN age BETWEEN 0 AND 10 THEN '[0-10]'
  47.     WHEN age BETWEEN 11 AND 20 THEN '[11-20]'
  48.     WHEN age BETWEEN 21 AND 30 THEN '[21-30]'
  49.     WHEN age BETWEEN 31 AND 40 THEN '[31-40]'
  50.     WHEN age BETWEEN 41 AND 50 THEN '[41-50]'
  51.     WHEN age BETWEEN 51 AND 60 THEN '[51-60]'
  52.     WHEN age > 60 THEN '[61+]'
  53. END AS `age_group`,
  54. COUNT(deposit_amount) AS `wizard_count`
  55. FROM wizzard_deposits
  56. GROUP BY age_group;
  57. --------------
  58. 10. First Letter
  59. SELECT DISTINCT SUBSTRING(first_name,1,1) AS `first_letter`
  60. FROM `wizzard_deposits` WHERE `deposit_group` = 'Troll Chest'
  61. GROUP BY `first_letter` ORDER BY `first_letter`;
  62. ----------------
  63. 11. Average Interest
  64. SELECT `deposit_group`,`is_deposit_expired`,
  65. AVG(`deposit_interest`) AS `average_interest`
  66. FROM `wizzard_deposits`
  67. WHERE DATE_FORMAT(`deposit_start_date`,'%Y-%m-%d') > '1985-01-01'
  68. GROUP BY `deposit_group`,`is_deposit_expired`
  69. ORDER BY `deposit_group` DESC, `is_deposit_expired` ASC;
  70. ----------------
  71. 12. Rich Wizard, Poor Wizard
  72. CREATE VIEW rw_pw AS SELECT host.first_name AS `host_wizard`, host.deposit_amount AS `host_wizard_deposit`,
  73. guest.first_name AS `guest_wizard`, guest.deposit_amount AS `guest_wizard_deposit`
  74. FROM wizzard_deposits AS `host`, wizzard_deposits AS `guest` WHERE host.id+1=guest.id;
  75. SELECT SUM(`host_wizard_deposit` - `guest_wizard_deposit`) AS `difference`
  76. FROM rw_pw;
  77. ---------------
  78. 13. Employees Minimum Salaries
  79. SELECT department_id,MIN(salary) FROM employees WHERE department_id IN(2,5,7)
  80. AND hire_date > '2000-01-01' GROUP BY department_id ORDER BY department_id ASC
  81. ---------------
  82. 14. Employees Average Salaries
  83. CREATE TABLE `higher_salary` SELECT * FROM employees WHERE
  84. salary > 30000;
  85. DELETE FROM `higher_salary` WHERE manager_id=42;
  86. UPDATE `higher_salary` SET salary = salary+5000 WHERE department_id=1;
  87. SELECT department_id,AVG(salary) AS `avg_salary`
  88. FROM `higher_salary` GROUP BY department_id ORDER BY department_id ASC;
  89. --------------
  90. 15. Employees Maximum Salaries
  91. SELECT department_id, MAX(salary) AS `max_salary` FROM employees
  92. GROUP BY department_id
  93. HAVING NOT MAX(salary) BETWEEN 30000 AND 70000
  94. ORDER BY department_id ASC;
  95. ----------------
  96. 16. Employees Count Salaries
  97. SELECT COUNT(salary) FROM employees WHERE manager_id IS NULL;
  98. -----------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement