התמודדות עם ערכים כפולים ב-SQL יכולה להיות משימה מסורבלת. אבל אל תפחדו, המדריך הזה כאן כדי להקל עליכם את הנטל.
נתונים מגיעים בכל הצורות והצורות, אבל רשומות כפולות הן חלק בולט בכל פורמט נתונים. בין אם אתה עוסק בנתונים מבוססי אינטרנט או פשוט ניווט בין משאית של נתוני מכירות, הניתוח שלך ישתווה אם יש לך ערכים כפולים.
האם אתה משתמש ב-SQL כדי לחתוך את המספרים שלך ולבצע שאילתות ארוכות בערימות הנתונים שלך? אם כן, אז המדריך הזה על ניהול כפילויות SQL יהיה תענוג מוחלט עבורך.
הנה כמה דרכים שונות שבהן תוכל להשתמש כדי לנהל כפילויות באמצעות SQL.
1. ספירת כפילויות באמצעות קיבוץ לפי פונקציה
SQL היא שפת תכנות רבת פנים המציעה פונקציות שונות לפשט חישובים. אם יש לך ניסיון רב עם פונקציות הצבירה ב-SQL, אולי אתה כבר מכיר את קבוצה לפי פונקציה ולמה זה יכול לשמש.
ה קבוצה לפי הפונקציה היא אחת מהן פקודות SQL הבסיסיות ביותר, שהוא אידיאלי להתמודדות עם רשומות מרובות מכיוון שאתה יכול להשתמש בפונקציות מצטברות שונות כמו סְכוּם, לספור, מְמוּצָע, ורבים אחרים בשילוב עם קבוצה לפי פונקציה להגיע לערך מובהק מבחינת השורה.
בהתאם לתרחיש, אתה יכול למצוא כפילויות עם קבוצה לפי לתפקד בתוך עמודה אחת ומספר עמודות.
א. ספירת כפילויות בעמודה אחת
נניח שיש לך את טבלת הנתונים הבאה עם שתי עמודות: מזהה מוצר ו הזמנות.
מזהה מוצר |
הזמנות |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
כדי למצוא מזהי מוצר כפולים, אתה יכול להשתמש ב- קבוצה לפי פונקציה ואת שיש סעיף לסינון הערכים המצטברים, באופן הבא:
בחר מזהה מוצר, לספור(מזהה מוצר) כפי ש ספירה כוללת
מאת sahil.product_dups
קבוצה לפי מוצר
לאחר ספירה (מוצר) > 1
הזמנה לפי מוצר;
כמו במשפט SQL טיפוסי, עליך להתחיל בהגדרת העמודות שברצונך להציג בתוצאה הסופית. במקרה זה, אנו רוצים להציג את מספר הערכים הכפולים בתוך מזהה מוצר טור.
בקטע הראשון, הגדר את מזהה מוצר עמודה בתוך בחר הַצהָרָה. ה לספור הפונקציה עוקבת אחר ה מזהה מוצר הפניה כדי ש-SQL יבין את מטרת השאילתה שלך.
לאחר מכן, הגדר את טבלת המקור באמצעות ה- מ סָעִיף. מאז לספור הוא פונקציית צבירה, עליך להשתמש ב- קבוצה לפי פונקציה לקבץ את כל הערכים הדומים.
זכור, הרעיון הוא לרשום את הערכים הכפולים בתוך מזהה מוצר טור. לשם כך, עליך לסנן את הספירה ולהציג ערכי המתרחשים יותר מפעם אחת בעמודה. ה שיש סעיף מסנן את הנתונים המצטברים; אתה יכול להשתמש בתנאי, כלומר, ספירה (מוצר) >1, כדי להציג את התוצאות הרצויות.
סוף - סוף, ה מיין לפי סעיף ממיין את התוצאות הסופיות בסדר עולה.
הפלט הוא כדלקמן:
ב. ספירת כפילויות במספר עמודות
כאשר אתה רוצה לספור כפילויות במספר עמודות אבל לא רוצה לכתוב שאילתות SQL מרובות, אתה יכול להרחיב את הקוד לעיל עם כמה שינויים. לדוגמה, אם ברצונך להציג שורות כפולות במספר עמודות, תוכל להשתמש בקוד הבא:
בחר מוצר, הזמנות, לספור(*) כפי ש ספירה כוללת
מאת sahil.product_dups
קבוצה לפי מוצר, הזמנות
לאחר ספירה (מוצר) > 1
הזמנה לפי מוצר;
בפלט, תבחין שרק שתי שורות מוצגות. כאשר אתה מכוונן את השאילתה ומוסיף את ההפניה של שתי העמודות בתוך בחר הצהרה, אתה מקבל ספירה של שורות תואמות עם ערכים כפולים.
במקום ה ספירה (עמודה) פונקציה, עליך לעבור את לספור(*) פונקציה כדי לקבל שורות כפולות. ה * הפונקציה עוברת בין כל השורות ומחפשת שורות כפולות במקום ערכים כפולים בודדים.
הפלט מוצג להלן:
השורות המתאימות עם מזהה מוצר 14 ו-47 מוצגות מכיוון שערכי ההזמנה זהים.
2. סימון כפילויות עם פונקציית row_number()
בזמן ש קבוצה לפי ו שיש שילוב הוא הדרך הפשוטה ביותר למצוא ולסמן כפילויות בתוך טבלה, יש דרך חלופית למצוא כפילויות באמצעות row_number() פוּנקצִיָה. ה row_number() הפונקציה היא חלק מה- פונקציות חלון SQL קטגוריה והוא חיוני לעיבוד יעיל של השאילתות שלך.
כך תוכל לסמן כפילויות באמצעות ה row_number() פוּנקצִיָה:
בחר מוצר, הזמנות,
row_number() over (מחיצה לפי סדר מוצר לפי זיהוי מוצר) בתור sno
מאת sahil.product_dups;
ה row_number() הפונקציה מסרקת כל ערך מזהה מוצר ומטמיעה את מספר החזרות עבור כל מזהה. ה חֲלוּקָה מילת מפתח מפרידה את הערכים הכפולים ומקצה ערכים באופן כרונולוגי, כמו 1, 2,3 וכו'.
אם אתה לא משתמש ב חֲלוּקָה מילת מפתח, יהיה לך מספר סידורי ייחודי עבור כל מזהי המוצר, שלא יתאים למטרה שלך.
ה מיין לפי הסעיף במקטע המחיצה פונקציונלי בעת הגדרת סדר המיון. אתה יכול לבחור בין סדר עולה (ברירת מחדל) ויורד.
לבסוף, אתה יכול להקצות כינוי לעמודה כדי להקל על הסינון מאוחר יותר (במידת הצורך).
3. מחיקת שורות כפולות מטבלת SQL
מכיוון שערכים כפולים בטבלה יכולים להטות את הניתוח שלך, ביטולם במהלך שלב ניקוי הנתונים הוא לרוב הכרחי. SQL היא שפה חשובה המציעה דרכים לעקוב ולמחוק את הערכים הכפולים שלך ביעילות.
א. שימוש במילת המפתח המובחנת
ה מוּבהָק מילת מפתח היא כנראה פונקציית SQL הנפוצה והנפוצה ביותר להסרת ערכים כפולים בטבלה. אתה יכול להסיר כפילויות מעמודה בודדת או אפילו לשכפל שורות במכה אחת.
כך תוכל להסיר כפילויות מעמודה אחת:
בחרמוּבהָק מזהה מוצר מ sahil.product_dups;
הפלט מחזיר רשימה של כל מזהי המוצר הייחודיים מהטבלה.
כדי להסיר שורות כפולות, אתה יכול להתאים את הקוד לעיל באופן הבא:
בחרמוּבהָק * מ sahil.product_dups;
הפלט מחזיר רשימה של כל השורות הייחודיות מהטבלה. בהסתכלות על הפלט, תבחין שמזהי מוצר 14 ו-47 מופיעים רק פעם אחת בטבלת התוצאות הסופית.
ב. שימוש בשיטת ביטוי טבלה נפוצה (CTE).
שיטת הביטוי המשותף של הטבלה (CTE) שונה מעט מקוד ה-SQL המיינסטרים. CTEs דומים ל הטבלאות הזמניות של SQL, כשההבדל היחיד הוא שהם וירטואליים, שאליהם אתה יכול להתייחס במהלך ביצוע השאילתה בלבד.
היתרון הגדול ביותר הוא שאתה לא צריך להעביר שאילתה נפרדת כדי להוריד את הטבלאות האלה מאוחר יותר, מכיוון שהן מפסיקות להתקיים ברגע שהשאילתה מופעלת. באמצעות שיטת CTE, אתה יכול להשתמש בקוד שלהלן כדי למצוא ולמחוק כפילויות.
עם cteproducts כפי ש
(בחר מוצר, הזמנות,
row_number() over (מחיצה לפי סדר מוצר לפי זיהוי מוצר) בתור sno
מאת sahil.product_dups)
בחר * מ cteproducts
כאשר sno = 1;
אתה יכול להפעיל את פונקציית CTE באמצעות עם מילת מפתח; הגדירו את שם הטבלה הווירטואלית הזמנית אחרי ה- עם מילת מפתח. הפניה לטבלת CTE שימושית בעת סינון ערכי הטבלה.
בחלק הבא, הקצה מספרי שורות למזהי המוצר שלך באמצעות ה row_number() פוּנקצִיָה. מכיוון שאתה מפנה לכל מזהה מוצר עם א חֲלוּקָה פונקציה, לכל מזהה חוזר יש ערך מובהק.
לבסוף, סנן את החדש שנוצר סנו עמודה בקטע האחרון עם אחר בחר הַצהָרָה. הגדר מסנן זה ל-1 כדי לקבל ערכים ייחודיים בפלט הסופי.
למד להשתמש ב-SQL בדרך הקלה
SQL והגרסאות שלו הפכו לשיחת העיר, עם היכולת המולדת שלו לבצע שאילתות ולהשתמש בבסיסי נתונים יחסיים. מכתיבת שאילתות פשוטות ועד ביצוע ניתוחים משוכללים עם שאילתות משנה, בשפה הזו יש מעט מהכל.
עם זאת, לפני כתיבת שאילתות כלשהן, עליך לחדד את הכישורים שלך ולהתחיל לפצח עם הקודים כדי להפוך את עצמך לקודד מיומן. אתה יכול ללמוד SQL בצורה מהנה על ידי יישום הידע שלך במשחקים. למד כמה ניואנסים של קידוד מהודרים על ידי הוספת קצת כיף לקוד שלך.