SQL part 1 (1)

תרגול SQL

בפוסט הקרוב תוכלו ללמוד sql על רגל אחת על ידי שאלות ודוגמאות,

תוך 2 דקות בלבד ללא צורך בכרטיס אשראי!!!!

איזה דאטה בייס?

BIGQUERY – אולי הדאטה בייס הכי פופלרי נכון להיום בעולם ניתוח הנתונים ובמיוחד בהייטק המקומי

רגע, מה הקא׳ץ?

אז זהו שאין!
 Google רוצים לאפשר לכמה שיותר אנשים להתנסות עם הדאטה בייס הזה

איך?

בסרטון הקצר שלפניכם תראו איך מתקינים BIGQUERY, סרטון קצר של פחות משתי דקות שאחרי זה תיהיה לכם גישה לעבוד עם הדאטה בייס

פרטים טכנים לשימוש בחינם ללא כרטיס אשראי

  1. תוכלו להשתמש בדאטה סט של עד 10GB בכל חודש
  2. תוכלו להריץ עד 10TB של עיבוד של דאטה כל חודש – זה המון מניסון אתם צריכים טבלה מאודדדד גדולה כדי להגיע לכמות הזאת.
  3. הטבלאות ישמרו לזמן של עד 60 יום, כמובן שאפשר ליותר אבל זה מצריך כבר כרטיס אשראי.
  4. {table}.{dataset}.{Project} פרויקט זה המשאבים של ביגקוורי והמיקום של הטבלאות שלנו, dataset – זה בעצם מעין תקייה בה אנחנו שומרים את כל הטבלאות שלנו, רצוי על פי נושא מסוים – לרוב כשאנחנו כותבים שאילתות נכתוב את הפרויקט דאטה סט וטבלה בצורה מפורשת כדי להמנע מטעויות ושגיאות לא צפויות, לדוגמא: sqlproject.dwh.table1

צפייה בסרטון ואתם יכולים להתחיל לתרגל sql עם bigquery תוך שתי דקות

איך אני ממליץ לפתור את התרגילים תוך כדי קריאת הבלוג

בפוסט הקרוב תוכלו ללמוד על רגל אחת sql על ידי שאלות ודוגמאות,

צירפתי רשימה של הנושאים שנעבור עליהם עם ספולירים כאן מתחת

לימוד SQL ישים אתכם בחזית העסקית של כל ארגון, תוכלו להבין תהליכים ולהשפיע על ידי הבנת הנתונים וניתוחםץ

לימוד SQL ממש לא מסובך כמו שהוא נשמע, אתם תתפלאו כמה השליטה בשפה תהיה אינטואיטיבית אחרי מספר תרגולים איתנו,

בסיס נתונים מכיל מספר גדול של טבלאות המייצגות מידע כלשהו ויושבות באותו מחסן נתונים, ממש כמו בקבצי האקסל שאתם מכירים.

כתיבת קוד שמאפשרת שליפת נתונים

הפקודה הבסיסית ביותר לשלוף מידע  מבסיס הנתונים

פקודה שמחזירה לי מספר שורות לפי מה שאני מגדיר

פקודה שמחזירה לי ערך בתצורה חד ערכית

פקודה שמחזירה  רק את הדאטה הרלבנטי מהטבלה, פקודה מאוד חיונית לכמויות הדאטה הגדולות שנשמרות בבסיסי הנתונים היום

מחפשים קורס SQL למתחילים בחינם? במדריך SQL הבא, נלמד איך לכתוב בשפת תכנות זו, לתחקר נתונים ברמה מקצועית וגם נתרגל דוגמאות מהשטח כדי להכין אתכם לעבודה עצמאית.

 

SQL היא שפת תכנות המאפשרת לנו לגשת למידע, למיינו ולעשות עליו מניפולציות. המידע או ״הדאטה״ הוא הקבצים השמורים בתוך מחסן נתונים שלנו, הנקרא גם Data Base.

אם באתם להתאמן על מבחנים בראיונות עבודה כנסו ללינק הזה

אם כבר הסתבכתם בהסברים הנ״ל, אל דאגה – במדריך הבא שהוא חלק מסדרה של מאמרים מפורטים, נלמד אתכם את כל מה שחשוב בצורה פשוטה וברורה, נציג מגוון רעיונות וגם פרקטיקות מהשטח. כל זאת במטרה שבעתיד, תוכלו לבנות דאטה בייס ולתחקר את הנתונים שלכם בעצמכם. גם אם אין לכם תואר בהנדסה, תשלטו בנושא כמו מקצוענים אמיתיים ואפילו תוכלו להנות על הדרך.

למה בעצם ללמוד SQL?

לימוד SQL ממש לא מסובך כמו שהוא נשמע, אתם תתפלאו כמה השליטה בשפה תהיה אינטואיטיבית אחרי מספר תרגולים איתנו.

האמת היא, שאין צורך בתואר שני בשביל לענות על שאלות שמעניינות אתכם, בין אם אתם: אנליסטים, אנשי שיווק, יועצים פיננסיים, מנהלי מוצר או פשוט אנשים סקרנים מטבעם, המדריך הבא יעניק לכם הבנה מעמיקה בבעיה העסקית דרך הנתונים שברשותכם.

רגע, כבר מתחילים ללמוד? עדיין לא, בואו נעבור קודם על כמה מושגי יסוד חשובים, מבטיחים שזה לא יישמע כמו ג׳יבריש!

מהו בסיס נתונים (Data Base)?

בסיס נתונים מכיל מספר גדול של טבלאות המייצגות מידע כלשהו ויושבות באותו מחסן נתונים, ממש כמו בקבצי האקסל שאתם מכירים.

לדוגמא: בחנות שלי קיימת טבלה המייצגת מכירות, טבלה המייצגת מלאי וכן הלאה.

כך נלמד אתכם את נושא הטבלאות בצורה היעילה ביותר:

  1. נעבוד עם צילומים של טבלאות, כאשר כל עמודה תיוצג בצבע משלה. המטרה כאן היא להקל עליכם מבחינת האתגר שעליכם לקלוט המון מידע במקביל.
  2. לכל הנושאים שנציג, יתווספו שאלות לדוגמא, כך שתצליחו להתעמק בנושא ואף לתרגל את אותן שאלות במקביל על דף או על קובץ במחשב.
  3. הדרך להצלחה היא על ידי תרגול רב. סקרנים לדעת על כמה תרגילים מדובר כדי להצליח לתחקר ברמה גבוהה? כמובן שזה מאוד אינדיבידואלי, אך בהחלט יש צורך ב-50 שאלות לפחות וכמובן, להמשיך לתרגל כמה שניתן כדי לשמר את מה שלמדנו.

שלושה סוגי נתונים מרכזיים בטבלה:

מספר int – בעמודה כזו יכולים להכנס מספרים בלבד. למה? זה יקל עלינו לדעת שהבסיס מסודר כמו שצריך.

לדוגמא: תחשבו על קובץ אקסל שבו יש טבלה המכילה הכנסות לפי יום. אם בטעות נלחץ בהמשכיות על האות ״ל״ במקלדת, אז יופיע לנו באמצע הטבלה: ״ללללללל״.

לא נעים, נכון? כדי למנוע מקרים כאלו, בבסיס נתונים דבר כזה לא יכול לקרות כי סוג העמודה מקבלת רק ערכים מספריים.

String – עמודה זו משמשת לערכים שהם טקסט, אך תיאורטית היא יכולה לקבל כל ערך בטבלה.

Date – עמודה זו משמשת לערכים מסוג תאריך.

SQL Query (או בשמה הנוסף ״שאילתה״):

שאילתה בשפה המקצועית היא מה שכתבנו על מנת לקבל את הערכים הרצויים. בתכלס, זה מה שאנחנו הולכים ללמוד במדריך SQL הזה ממש! בואו נעבור על דוגמא מעניינת ועל הדרך נשתמש ב- SQL 

 

לפנינו טבלה דמיונית של עובדים מכל העולם במחלקות דאטה, לפי תפקידים שונים:

את הטבלה אתם יכולים להוריד מהלינק הזה

סרטון איך להעלות את הקובץ לדאטה בייס שלכם בביגקוורי

בואו נאמר, שיש מספר שאלות שמאוד מעניינות אותנו ונרצה לקבל עליהם תשובה. בשביל זה, אנחנו צריכים לדעת איך לשלוף את הנתונים הרלוונטיים לנו.


SELECT * FROM

הפקודה הזאת היא פקודה שתמיד נשתמש בה, פשוט ככה, כך תוכלו לשלוף את כל המידע מהטבלה הספציפית, ראו את הדוגמא מתחת לשורות אלו, ״הבא לי את כל הנתונים מטבלה בשם data_salaries

				
					SELECT
*
FROM
data_salaries
				
			

שימו לב שזה ממש דומה לשפה האנושית: לבחור ב״כוכבית״ משמע, בחירת כל העמודות הקיימות בטבלה.

 

דמיינו מצב שבו יש מאה עמודות בטבלה, כמה מבאס זה יהיה לרשום את כל השמות בקוד. בדיוק בשביל זה, אפשר פשוט לסמן כוכבית.

 

2. בצורה הבאה, תוכלו לבחור להציג רק חלק מהעמודות:

				
					SELECT
    First_name
    email,
  FROM Data_salaries
				
			

התוצאה שתתקבל ->

LIMIT          

כיצד תוכלו לבחור רק חלק מהשורות?

בשביל זה קיימת פונקציה בשם LIMIT שמגבילה את כמות השורות החוזרות.

כאן יוחזרו רק שלוש השורות הראשונות בשונה מהדוגמא לפני, שבה חזרו כל השורות הקיימות בטבלה.

				
					SELECT
    First_name,
    email
 FROM Data_salaries
    LIMIT 3
				
			

DISTINCT         

עכשיו שכבר הבנו הכל :), אנחנו נרצה להתחיל להבין יותר לעומק את הנתונים שבטבלה.

לדוגמא: איזה תפקידים יש בעמודת data role?

תכירו פקודה חדשה בשם DISTINCT:

 הפקודה תחזיר לי רשימה שבה כל ערך יופיע אך ורק פעם אחת במידה ונבחר עמודה אחת, וצירוף יחיד של ערכים אם נבחר כמה עמודות

				
					SELECT DISTINCT
    data_role
    FROM Data_salaries

				
			

ORDER BY         

כיצד ניתן למיין את התוצאות (גדול לקטן, מא עד ת׳ וההפך)?

אז, מסתבר שבשביל זה יצרו את הפונקציה ORDER BY .ORDER BY יגיע תמיד בסוף השאילתה.

אחרי ה-ORDER BY, נציין ASC סדר עולה או DESC סדר יורד. כאשר לא נציין שום דבר, הפקודה תחשב כ- ASC.

כפי שאתם רואים, הפונקציות ממשיכות להקרא בשמות אינטואיטיבים וקלים להבנה (:

4. אנו מעוניינים לקבל את אותה רשימה מלמעלה (איזה תפקידים יש בעמודת data role), אבל ממוינים לפי ה- ABC.

כיצד נעשה את זה?

				
					SELECT DISTINCT
    data_role
    FROM Data_salaries
    ORDER BY data_role ASC

				
			

שאלות לתרגול          

בואו נתרגל את מה שלמדנו:

  1. הציגו את כל הנתונים בטבלה?
  2. הציגו את עמודת email ,data_role.
  3. הציגו את עמודות first_name,last_name, רק את עשרת השורות הראשונות.
  4. הציגו רשימת DISTINCT של כל התפקידים.
  5. הציגו רשימת DISTINCT של כל התפקידים ושמות משפחה (כמה שורות קיבלתם בשאילתה הקודמת וכמה עכשיו? מה ההבדל?)
  6. הציגו את עשרת בעלי השכר הגבוה ביותר (שכר, שם פרטי ושם משפחה) ומה תפקידם?
  7. הציגו את עשרת בעלי השכר הגבוה ביותר (שכר, שם פרטי ושם משפחה) ותפקידם, ממוינים לפי ה -ABC.

WHERE

מתי נשתמש בפקודת WHERE?

כאשר נרצה ״לפלטר״ את הטבלה, כלומר לסנן שורות לא רלוונטיות, נשתמש בפקודת WHERE.

רגע, איך משתמשים?
מתי? כמעט כל הזמן, בעידן של היום אנחנו עובדים עם טבלאות ענק ולכן נריץ את השאילתות רק כנגד הדאטה הרלבנטי.
האם זה חובה? לא, זה ממש לא חובה, אבל רצוי ביותר. למה בעצם?
משום שכך נרצה לחקור רק את הנתונים הרלוונטים לנו.

WHERE אומר לנו את הדבר הבא: תסמן את העמודה הרלוונטית ואני אסרוק את כל השורות הרלוונטיות. מה שלא יעמוד בתנאים, לא יחזור בתוצאות.

את מה אנחנו מפלטרים? סופסוף הקורס SQL הזה מתחיל להיות מעניין. מצליחים לנחש למה?

כי מאז שהתחלנו לעבוד עם נתונים, התרגלנו לחשוב ולעבוד ברמת התא. כולנו זוכרים את הפעם הראשונה שלמדנו את פונקציית IF: תמיד היינו מסמנים תא ספציפי ואם היינו מתוחכמים, גם היינו גוררים את הפונקציה מטה.

				
					SELECT
*
    FROM Data_salaries
-- THIS IS THE OPTIONS YOU CAN USE
    WHERE   
    --column_name = 1
    --column_name <> 1
    --column_name > 1
    --column_name < 1
    --column_name BETWEEN X AND Y
    --column_name LIKE 'EXAMPLE'
    --column_name IN ('X','Y','Z')

				
			

בואו נעבור על כמה דוגמאות:

משימה: הצג את כל האנשים שהרוויחו מעל $50,000.

כמה שורות יחזרו?

 

תשובה:

שורה אחת בלבד

				
					SELECT
    *
    FROM Data_salaries
    WHERE salary > 50000
				
			

כמה עמודות יחזרו?

תשובה: כל העמודות כי כתבנו *

שאלה: האם אני יכול לבחור להציג רק עמודות מסוימות?

תשובה: בוודאי! תלוי בעמודות שאבחר ב-SELECT.

 

שאלה: האם העמודה salary שמופיעה ב-WHERE חייבת להופיע ב-SELECT?

תשובה: בוודאי שלא! אין שום קשר בין העמודות שאבחר להציג ב-SELECT לתנאי שאבחר לשים על העמודה ב-WHERE.

 

משימה: הצג את כל האנשים שהרוויחו בין 39000 ל-40000.

 

				
					--אופציה 1 
SELECT
*
FROM Data_salaries
WHERE salary >= 39000
AND salary <=40000

				
			
				
					--אופצייה 2  
SELECT
*
FROM Data_salaries
WHERE salary BETWEEN  39000 AND 40000

				
			

שימו לב לשני דברים חדשים כאן:

 

  1. ניתן להשתמש בתנאי AND. האם זה אומר שאפשר להשתמש גם ב- OR? כמובן, תנאים לוגיים.
  2. אילו עוד תנאים קיימים? אנחנו נגלה עד סוף המדריך.
  3. ניתן לקרוא לאותה עמודה בכמה תנאים salary.
  4. שימוש ב-BETWEEN, פשוטו כמשמעו.

 

משימה: הצג את כל השמות הפרטיים ושמות המשפחה של אלו שהרוויחו מעל $50,000.

 

				
					SELECT
    first_name,
    last_name
  FROM Data_salaries
    WHERE salary > 50000

				
			

משימה: הציגו את כל האנשים שתפקידם הוא Director.

 

				
					--אופצייה 1
SELECT
    *
FROM Data_salaries
WHERE data_role LIKE ’Director’

				
			
				
					--אופצייה 2
SELECT
    *
FROM Data_salaries
WHERE data_role = ’Director’

				
			

מה למדנו כאן?

 

  1. שימוש ב-LIKE המשמש למציאת משהו שדומה, עליו נרחיב בהמשך.
  2. חיזקנו את ההבנה שלנו, שתמיד נשתמש בשם של העמודה כדי לפלטר את הנתונים על פי התנאי שלה.

 

משימה: הציגו את כל האנשים שתפקידם הוא Director ,VP, Analyst.

 

				
					--אופצייה 1
SELECT
    *
FROM Data_salaries
WHERE data_role = ’Director’
    OR data_role = ’VP’
    OR data_role = ’Analyst’

				
			
				
					--אופצייה 2
SELECT 
    *
  FROM Data_salaries
    WHERE data_role IN (’Director’,’VP’,’Analyst’)

				
			

מה למדנו כאן?

 

  1. שימוש ב-OR: אם אחד מהתנאים מתקיים, תחזיר את הערכים ללא קשר לשני.
  2. שימוש ב-IN: שימו לב, שמנו בסוגריים את כל הערכים שרצינו לקבל. מאוד נוח כאשר נרצה לבחור מספר רב של ערכים.
  3. מה היה קורה אם היינו רושמים NOT IN? כמה שורות היינו מקבלים?

 

תשובה 3: רק שורה אחת! לא בטוחים? מוזמנים לבדוק ולתרגל ב-bigquery.

 

 

למדנו הרבה מאוד עד כה. אז בואו נסכם:

 

WHERE, AND, OR, BETWEEN, LIKE, IN, NOT IN

 

מקווים שענינו במדריך זה על רוב שאלות ה-SQL שלכם. למדנו איך לקבל את המידע הרלוונטי לנו, במקום לקבל אלפי שורות ואפילו מיליוני שורות, קיבלנו בדיוק את מה שאנחנו צריכים.

 

אז, מה אנחנו כבר יודעים לבצע אחרי תרגול SQL שכזה?

 

בעיקר להוציא רשימות ולעשות עליהן מניפולציות מורכבות יותר באקסל.

 

מה נלמד במדריך SQL הבא?

 

במסגרת קורס SQL למתחילים, במדריך הבא נתחיל ללמוד חישובים ופונקציות שמסכמות לנו את הנתונים, כגון: MAX, MIN, SUM, COUNT, AVG.

 

אחרי התרגול הבא, כבר נוכל להבין איך הנתונים שלנו נראים, להבין מסקנות בסיסיות עליהם וכל זה בפקודת SQL פשוטה.

 

נשמע מעניין, נכון? מזומנים להמשיך למדריך הבא

תרגול SQL

Recent Blogs

מחנה אימונים ב SQL

קורס לתרגול SQL 
עם מעל 50 שאלות!

מעבר על נושאים רבים ומגוונים