Mekki MOURADI

Data Analyst

Rabat, Maroc

À Propos

Data Analyst Junior avec une solide expérience en marketing numérique et des compétences approfondies dans l’utilisation de Microsoft Excel, SQL, Tableau Software et Python.

Mastering SQL Joins

Liens

Compétences & Outils

Description du projet

Apprendre à combiner des données provenant de deux ou plusieurs tables

  • INNER JOIN
  • LEFT and RIGHT JOINS
  • JOIN feat WHERE
  • JOIN feat AGGREGATE FUNCTIONS
  • Join more than 2 tables

Objectifs de l'analyse

Utiliser les Fonctions de Jointure SQL pour combiner des données provenant de deux ou plusieurs tables pour les besoins de l’analyse.
  1. INNER JOIN
  1. Extract all managers employees number, department number, and department name. Order by the manager's department number
				
					SELECT  dm.emp_no,
        dm.dept_no,
        d.dept_name
FROM dept_manager_dup dm
JOIN departments_dup d
ON dm.dept_no=d.dept_no
ORDER BY dm.dept_no;
				
			
emp_nodept_nodept_name
110039d001Marketing
110022d001Marketing
110228d003Human Resources
110183d003Human Resources
110344d004Production
110386d004Production
110420d004Production
110303d004Production
110567d005Development
110511d005Development
110765d006Quality Management
110800d006Quality Management
110854d006Quality Management
110725d006Quality Management
111133d007Sales
111035d007Sales
111534d008Research
111400d008Research
111784d009Customer Service
111877d009Customer Service
111939d009Customer Service
111692d009Customer Service
  1. Extract a list containing information about all managers employees number, first and last name, department number and hire date
				
					SELECT  dm.emp_no,
		e.first_name,
		e.last_name,
		dm.dept_no,
		e.hire_date
FROM employees e
JOIN dept_manager dm
ON e.emp_no=dm.emp_no;
				
			
emp_nofirst_namelast_namedept_nohire_date
110022MargaretaMarkovitchd0011985-01-01
110039VishwaniMinakawad0011986-04-12
110085EbruAlpind0021985-01-01
110114IsamuLegleitnerd0021985-01-14
110183ShirishOssenbruggend0031985-01-01
110228KarstenSigstamd0031985-08-04
110303KrassimirWegerled0041985-01-01
110344RosineCoolsd0041985-11-22
110386ShemKierasd0041988-10-14
110420OscarGhazalied0041992-02-05
110511DeForestHagimontd0051985-01-01
110567LeonDasSarmad0051986-10-21
110725PeternelaOnuegbed0061985-01-01
110765RutgerHofmeyrd0061989-01-07
110800SanjoyQuadeerd0061986-08-12
110854DungPeschd0061989-06-09
111035PrzemyslawaKaelblingd0071985-01-01
111133HaukeZhangd0071986-12-30
111400ArieStaelind0081985-01-01
111534HilaryKambild0081988-01-31
111692TonnyButterworthd0091985-01-01
111784MarjoGiarratanad0091988-02-12
111877XiaobinSpinellid0091991-08-17
111939YuchangWeedmand0091989-07-10
  1. LEFT and RIGHT JOINS
  1. Extract a subset of all managers employee number, department number, and deparment name. Order by the managers' department number using LEFT JOIN
				
					SELECT  dm.dept_no,
		dm.emp_no,
		dd.dept_name
FROM departments_dup dd
LEFT JOIN dept_manager_dup dm
ON dm.dept_no=dd.dept_no
ORDER BY dm.dept_no
				
			
dept_noemp_nodept_name
d001110022Marketing
d001110039Marketing
d003110183Human Resources
d003110228Human Resources
d004110344Production
d004110386Production
d004110420Production
d004110303Production
d005110511Development
d005110567Development
d006110854Quality Management
d006110725Quality Management
d006110765Quality Management
d006110800Quality Management
d007111133Sales
d007111035Sales
d008111534Research
d008111400Research
d009111877Customer Service
d009111692Customer Service
d009111784Customer Service
d009111939Customer Service
NULLNULLPublic Relations
NULLNULLNULL
NULLNULLNULL
  1. Extract a subset of all managers employee number, department number, and deparment name. Order by the managers' department number using RIGHT JOIN
				
					SELECT  dm.dept_no,
		dm.emp_no,
		dd.dept_name
FROM dept_manager_dup dm
RIGHT JOIN departments_dup dd
ON dm.dept_no=dd.dept_no
ORDER BY dm.dept_no
				
			
dept_noemp_nodept_name
d001110022Marketing
d001110039Marketing
d003110183Human Resources
d003110228Human Resources
d004110344Production
d004110386Production
d004110420Production
d004110303Production
d005110511Development
d005110567Development
d006110854Quality Management
d006110725Quality Management
d006110765Quality Management
d006110800Quality Management
d007111133Sales
d007111035Sales
d008111534Research
d008111400Research
d009111877Customer Service
d009111692Customer Service
d009111784Customer Service
d009111939Customer Service
NULLNULLPublic Relations
NULLNULLNULL
NULLNULLNULL
  1. JOIN feat WHERE
  1. Extract the employee number, first name, last name, and salary of all employees, who earn more than 145k per year
				
					SELECT  e.emp_no,
		e.first_name,
		e.last_name,
		s.salary
FROM employees e
JOIN salaries s
ON e.emp_no=s.emp_no
WHERE salary>145000;
				
			
emp_nofirst_namelast_namesalary
11486ItzchakRamaiah145732
18997BasimTischendorf145215
  1. Select the first name, last name, the hire date and the salary of all employees whose first name is 'Mario' and last name is 'Straney'
				
					SELECT  e.first_name,
		e.last_name,
		e.hire_date,
		s.salary
FROM employees e
JOIN salaries s
ON e.emp_no=s.emp_no
WHERE e.first_name='Mario' AND e.last_name='Straney';
				
			
first_namelast_namehire_datesalary
MarioStraney1997-07-0964363
MarioStraney1997-07-0964523
MarioStraney1997-07-0964741
MarioStraney1997-07-0965092
MarioStraney1997-07-0968422
  1. Return a subset of all the employees whose last name is 'Markovitch'. See if the output contains a manager with that name
				
					SELECT  e.emp_no,
		e.first_name,
		e.last_name,
		CASE
			WHEN d.emp_no IS NOT NULL THEN 'Yes' ELSE 'No' 
		END AS is_department_manager
FROM employees e
LEFT JOIN dept_manager d
ON e.emp_no = d.emp_no
WHERE e.last_name = 'Markovitch';
				
			
emp_nofirst_namelast_nameis_department_manager
110022MargaretaMarkovitchYes
21545BoguslawMarkovitchNo
11817NiranjanMarkovitchNo
15392PradeepMarkovitchNo
10898MunenoriMarkovitchNo
12419SrinidhiMarkovitchNo
12977ByongMarkovitchNo
  1. JOINS feat AGGREGATE FUNCTIONS
  1. What is the average salary for the different genders
				
					SELECT  e.gender,
		ROUND(AVG(s.salary),2) AS average_salary
FROM employees e
JOIN salaries s
ON e.emp_no=s.emp_no
GROUP BY gender;
				
			
genderaverage_salary
M63865.65
F64163.84
  1. Retrieve the distribution of managers by gender
				
					SELECT  e.gender,
		COUNT(e.emp_no)
FROM employees e
JOIN dept_manager d
ON e.emp_no=d.emp_no
GROUP BY e.gender;
				
			
gendercount
M11
F13
  1. Join more than 2 tables in SQL
  1. Extract a list of all managers first and last name, department number, hire date, to_date, and department name
				
					SELECT  e.first_name,
		e.last_name,
		d.dept_no,
		e.hire_date,
		dm.to_date,
		d.dept_name
FROM employees e
JOIN dept_manager dm
ON e.emp_no=dm.emp_no
JOIN departments d
ON dm.dept_no=d.dept_no;
				
			
first_namelast_namedept_nohire_dateto_datedept_name
MargaretaMarkovitchd0011985-01-011991-10-01Marketing
VishwaniMinakawad0011986-04-129999-01-01Marketing
EbruAlpind0021985-01-011989-12-17Finance
IsamuLegleitnerd0021985-01-149999-01-01Finance
ShirishOssenbruggend0031985-01-011992-03-21Human Resources
KarstenSigstamd0031985-08-049999-01-01Human Resources
KrassimirWegerled0041985-01-011988-09-09Production
RosineCoolsd0041985-11-221992-08-02Production
ShemKierasd0041988-10-141996-08-30Production
OscarGhazalied0041992-02-059999-01-01Production
DeForestHagimontd0051985-01-011992-04-25Development
LeonDasSarmad0051986-10-219999-01-01Development
PeternelaOnuegbed0061985-01-011989-05-06Quality Management
RutgerHofmeyrd0061989-01-071991-09-12Quality Management
SanjoyQuadeerd0061986-08-121994-06-28Quality Management
DungPeschd0061989-06-099999-01-01Quality Management
PrzemyslawaKaelblingd0071985-01-011991-03-07Sales
HaukeZhangd0071986-12-309999-01-01Sales
ArieStaelind0081985-01-011991-04-08Research
HilaryKambild0081988-01-319999-01-01Research
TonnyButterworthd0091985-01-011988-10-17Customer Service
MarjoGiarratanad0091988-02-121992-09-08Customer Service
XiaobinSpinellid0091991-08-171996-01-03Customer Service
YuchangWeedmand0091989-07-109999-01-01Customer Service
  1. Retrieve the average salary for the different departments
				
					SELECT  d.dept_name,
		ROUND(AVG(s.salary)) AS average_salary
FROM departments d
JOIN dept_emp de
ON d.dept_no=de.dept_no
JOIN salaries s
ON s.emp_no=de.emp_no
GROUP BY d.dept_name;
				
			
dept_nameaverage_salary
Finance70621
Customer Service58754
Quality Management58119
Sales80865
Marketing72452
Development59620
Production59806
Research60313
Human Resources55941
  1. Retrieve the average salary for the different departments where the average salary is > 60k
				
					SELECT  d.dept_name,
		ROUND(AVG(s.salary)) AS average_salary
FROM departments d
JOIN dept_emp de
ON d.dept_no=de.dept_no
JOIN salaries s
ON s.emp_no=de.emp_no
GROUP BY d.dept_name
HAVING ROUND(AVG(s.salary)) > 60000;
				
			
dept_nameaverage_salary
Finance70621
Sales80865
Marketing72452
Research60313