วันจันทร์ที่ 29 มกราคม พ.ศ. 2561

MySQL - Tutorial

ศึกษาจาก: https://www.w3schools.com/sql/

1. คำสั่ง SELECT*FROM ...; คือคำสั่งที่ใช้เลือกสิ่งที่จะมาแสดงผล เช่น SELECT*FROM Customers; หมายถึง แสดงผล Customers ทั้งหมด ดังภาพ

2. คำสั่ง SELECT ... FROM ...; คือคำสั่งที่ใช้เลือกสิ่งที่จะแสดงผลเช่นกัน แต่จะอยู่ในรูปของ เลือก ... มาแสดงจาก ... เช่น SELECT CustomerName,City FROM Customers; หมายถึง เลือก CustomerName,City มาแสดงผล จาก Customers ทั้งหมด ดังภาพ

3. คำสั่ง SELECT DISTINCT ... FROM ...; คือคำสั่งที่ใช้เลือกสิ่งที่แตกต่างกันมาแสดงผล เช่น SELECT DISTINCT Country FROM Customers; หมายถึง เลือก Country ที่แตกต่างกัน จาก Customers ทั้งหมดมาแสดงผล ดังภาพ

4. คำสั่ง COUNT คือคำสั่งที่ใช้นับจำนวนที่เรานำมาแสดงผล เช่น SELECT COUNT(DISTINCT Country) FROM Customers; หมายถึง นับจำนวน Country ที่แตกต่างกันทั้งหมด ซึ่งจากภาพคือ มี Country ที่แตกต่างกันอยู่จำนวน 21 Country

5. คำสั่ง WHERE คือคำสั่งที่บอกเฉพาะเจาะจงว่าต้องการให้เลือกสิ่งใดมาแสดงผล เช่น WHERE Country = 'Mexico'; หมายถึง ให้เลือกแสดงผลเฉพาะ Country เป็น Mexico เท่านั้น ดังภาพ

6. คำสั่ง AND คือคำสั่งที่นำมาใช้ในกรณีที่ต้องการให้แสดงผลสิ่งที่เฉพาะเจาะจงมากกว่า 1 สิ่งขึ้นไป เช่น WHERE Country = 'Germany' AND City = 'Berlin'; หมายถึง ต้องการแสดงผล Country ที่เป็น Germany และ City ที่เป็น Berlin เท่านั้น ดังภาพ

7. คำสั่ง OR คือคำสั่งที่นำมาใช้ในกรณีที่ต้องการให้แสดงผลสิ่งที่เฉพาะเจาะจงมากกว่า 1 สิ่งขึ้นไปเช่นกันกับ AND แต่จะแตกต่างกันที่ หากเจอสิ่งที่เฉพาะเจาะจงเพียงอย่างในอย่างหนึ่งในเงื่อนไข ก็จะนำมาแสดงผลทันที เช่น WHERE Country = 'Germany' OR City = 'Berlin'; หมายถึง แสดงผล Country ที่เป็น Germany หรือ City ที่เป็น Berlin เท่านั้น ดังภาพ

8. คำสั่ง WHERE NOT คือคำสั่งที่ไม่ให้แสดงสิ่งที่เลือก เช่น WHERE NOT Country = 'Germany'; หมายถึง ไม่ให้แสดงผล Country ที่เป็น Germany ดังภาพ

9. คำสั่ง ORDER BY คือคำสั่งที่ใช้ในการเรียงลำดับ เช่น ORDER BY Country หมายถึง เรียงลำดับตัวอักษรใน Collumn Country จาก A-Z และ
10. คำสั่ง ORDER BY ... DESC; คือคำสั่งที่ใช้เรียงลำดับเช่นกัน แต่จะเรียงลำดับจากหลังมาหน้า เช่น ORDER BY CustomerName DESC; หมายถึง เรียงลำดับตัวอักษรใน Collumn CustomerName แต่เป็นการเรียงจาก Z-A ดังภาพ

11. คำสั่ง INSERT INTO ... VALUES ...; คือคำสั่งที่ใช้แทรกข้อมูลต่างๆเข้าไปในแต่ละ Attribute ตัวอย่างดังภาพ

12. แต่หากเราใส่ข้อมูลไปไม่ครบทุก Attribute ใน Collumn ที่เราไม่ได้ใส่ข้อมูลนั้น จะแสดงผลว่า null ดังภาพ

13. คำสั่ง SET คือคำสั่งที่เป็นการบังคับให้เพิ่มข้อมูลไปยังตำแหน่งที่เราต้องการ (ในที่นี้ใช้ร่วมกับคำสั่ง UPDATE ซึ่งเป็นคำสั่งในการปรับปรุงข้อมูลให้เป็นปัจจุบัน) ตัวอย่างดังภาพ หมายถึงการใส่ข้อมูล ContactName โดยบังคับให้ใส่ข้อมูลในตำแหน่งที่ CustomerID = 1;

14. อีกหนึ่งตัวอย่างดังภาพ คือ SET ContactName = 'Juan' ในทุกๆตำแหน่งที่ Country = 'Mexico';

15. ข้อควรระดังคือ อย่าลืมใส่ WHERE คือตำแหน่งที่เราต้องการจะใส่ ไม่เช่นนั้น ค่าที่เรากำหนดจะปรากฎอยู่ทุกช่องของ Collumn นั้นๆ ดังภาพ

16. คำสั่ง TOP คือคำสั่งที่ใช้เลือก ... สิ่งแรกมาแสดงผล เช่น SELECT TOP 3 * FROM Customers; หมายถึง ให้แสดงผล 3 คนแรกใน Customers ดังภาพ

17. คำสั่ง LIMIT มีความหมายเหมือนกับคำสั่ง TOP เพียงแต่ต่างภาษาที่ใช้กันเท่านั้น

18. คำสั่ง MIN คือคำสั่งที่ใช้หาค่าที่น้อยที่สุดใน Attribute นั้นๆ

19. คำสั่ง MAX คือคำสั่งที่ใช้หาค่าที่มากที่สุดใน Attribute นั้นๆ

20. คำสั่ง AVG คือคำสั่งหาค่าเฉลี่ยของ Attribute นั้นๆ

21. คำสั่ง SUM คือคำสั่งรวมค่าทุกค่าของ Attribute นั้นๆ

22. คำสั่ง LIKE คือคำสั่งเช็คเงื่อนไขต่างๆที่เรากำหนด จากภาพ a% หมายถึงให้ตรวจสอบว่า ข้อมูลไหนมีตัว a ขึ้นต้นบ้าง ให้นำข้อมูลนั้นมาแสดงผล เช่นเดียวกันกับ %a หรือ %or% หรือ _r% หรือ a_%_% หรือ a%o หมายถึง จบด้วย a หรือ ประกอบไปด้วย or หรือ มีตัว r อยู่ในตำแหน่งที่สอง หรือ เริ่มต้นด้วย a และมีอย่างน้อย 3 ตัวอักษร หรือ เริ่มด้วย a และจบด้วย o ดังภาพ

23. คำสั่ง BETWEEN คือคำสั่งที่ใช้ในการเจาะจงผลลัพธ์ที่จะแสดงออกมา เช่น WHERE Price BETWEEN 10 AND 20; หมายถึง ให้แสดงผล Attribute Price ที่มีค่าระหว่าง 10 และ 20 ดังภาพ

24. คำสั่ง NOT BETWEEN คือคำสั่งที่เจาะจงผลลัพธ์ที่ไม่ต้องการให้แสดงผล เช่น WHERE Price NOT BETWEEN 10 AND 20; หมายถึง ไม่ให้แสดงผล Attribute Price ที่มีค่าระหว่าง 10 และ 20 ดังนั้น ค่าที่จะนำมาแสดง ต้องเป็นค่าที่น้อยกว่า 10 และ มากกว่า 20 ดังภาพ

25. คำสั่ง AS คือคำสั่งที่กำหนดว่าให้ค่าจาก Attribute ไหน มาแสดงผลใน Collumn อะไร เช่น SELECT CustomerID AS ID, CustumerName AS Custumer หมายถึง นำค่าจาก CustomerID มาแสดงใน Collumn ID และนำค่าจาก CustumerName มาแสดงใน Collumn Customer ดังภาพ

26. คำสั่ง JOINs มีหลายคำสั่งย่อย ได้แก่ INNER, LEFT, RIGHT, FULL ซึ่งแต่ละความหมายได้แก่ INNER หมายถึง เอาส่วนที่ซ้ำกันทั้ง 2 TABLES มาแสดงผล หรือ LEFT หมายถึง เอาส่วนที่ซ้ำกันทั้ง 2 TABLES และข้อมูลของ TABLES ที่ 1 มาแสดงผล หรือ RIGHT หมายถึง เอาส่วนที่ซ้ำกันทั้ง 2 TABLES และข้อมูลของ TABLES ที่ 2 มาแสดงผล หรือ FULL หมายถึง เอาข้อมูลของทั้ง 2 TABLES มาแสดงผลทั้งหมด ดังภาพ

27. คำสั่ง GROUP BY คือคำสั่งรวมกลุ่ม โดยใช้ Attribute เป็นตัวกำหนด เช่น GROUP BY Country; หมายถึง ให้รวมกลุ่มโดยใช้ Country ต่างๆเป็นตัวกำหนด จะได้ค่าดังภาพ

28. คำสั่ง HAVING เป็นคำสั่งที่กำหนดผลที่จะแสดง เช่น HAVING COUNT(CustomerID) > 5; หมายถึง ให้แสดงผล CustomerID ที่มีค่ามากกว่า 5 ดังภาพ (ในที่นี้ใช้ร่วมกับคำสั่ง GROUP BY)

29. คำสั่ง ANY และ ALL โดย คำสั่ง ANY หมายถึงคำสั่งที่ให้แสดงผลเมื่อเจอเงื่อนไขใดๆในทุกๆ subquery ส่วน ALL หมายถึงคำสั่งที่ให้แสดงผลเมื่อเจอเงื่อนไขใดๆในทุก subquery

30. วิธีใส่ Comment ในภาษา MySQL มี 2 แบบคือ ใส่ 1 บรรทัด กับ ใส่หลายบรรทัด ตัวอย่างดังภาพ


วันอังคารที่ 23 มกราคม พ.ศ. 2561

Try DBMS - MySQL

เว็บโหลด MySQL Installer - https://dev.mysql.com/downloads/file/?id=472899

เมื่อโหลดมาแล้วทำการ install ตามลิงค์ - http://www.mysqltutorial.org/install-mysql/

หลังจาก Install เสร็จสิ้น จะได้โปรแกรมดังภาพ


ซึ่งในขณะนี้ กำลังดำเนินการทดลองใช้งาน MySQL หากทดลองสำเร็จ จะมาอัพเดทความคืบหน้าผ่านทาง Blog เป็นระยะๆ...

วันจันทร์ที่ 22 มกราคม พ.ศ. 2561

Python CSV Calculate Grade

ทดลองอ่านไฟล์ CSV จากการใช้โค้ดภาษา Python

ผลลัพธ์ที่ได้คือ สามารถอ่านค่าจากไฟล์ .CSV ได้ โดยจะแสดงผลในรูปของ Array ต่อ 1 Column

ต่อมาได้ทำการทดลองรวมค่าของ row[3] ในที่นี้ index ที่ 3 ของแต่ละ column คือแถวของหน่วยกิต หรือคือการรวมค่าของหน่วยกิตทั้งหมดนั่นเอง โดยให้ทำการเช็คว่า row นั่นๆ เป็น Array เปล่าหรือไม่ หากเป็น Array เปล่า ให้ทำการแสดงค่าผลรวมที่ได้ออกมา หากไม่ใช่ ให้ทำการรวมค่าของ Array นั้นเพิ่มเข้ามา

เนื่องจากได้ทำการเว้นช่องว่างของแต่ละเทอมไว้ เพื่อให้แสดงผลรวมของหน่วยกิตในแต่ละเทอมในช่องว่างของระหว่างสองเทอมนั้น

ผลลัพธ์ที่ได้จากการแสดงผล ปรากฎว่า ในเทอมสุดท้ายของการเรียน ไม่ถูกแสดงผลออกมา เนื่องจาก CSV จะไม่นับช่องว่างหลังสุดที่ไม่มีข้อมูล แต่จะนับถึงบรรทัดสุดท้ายของข้อมูลที่มีในไฟล์ CSV ทั้งหมดเท่านั้น จึงทำให้โปรแกรมมองไม่เห็นช่องว่างที่จะรวมผล จึงทำให้ไม่สามารถแสดงผลของหน่วยกิตรวมเทอมสุดท้ายได้


จึงทำการสร้างเงื่อนไขให้โปรแกรมเช็คว่า บรรทัดนั้นๆ เป็นบรรทัดสุดท้ายแล้วหรือยัง ห้ามเป็นบรรทัดสุดท้าย ให้รวมค่าของบรรทัดนั้นเข้ามาด้วย จากนั้นจึงแสดงผลออกมาอีกครั้งหนึ่ง

ผลได้ที่จากการสร้างเงื่อนไขเช็คบรรทัดสุดท้าย คือหน่วยกิตรวมของเทอมสุดท้ายนั้น สามารถแสดงผลออกมาได้


ต่อมาได้ทำการรวมผลระดับคะแนนของแต่ละเทอมออกมา เพื่อใช้ในการหาเกรดเฉลี่ย โดยแถวที่ 3 คือหน่วยกิต ดังที่ได้กล่าวข้างต้น ส่วนในแถวที่ 6 คือเกรดของแต่ละวิชา ดังนั้น gp หรือ grade point เกิดจาก เกรดที่ได้คูณกับหน่วยกิต โดยวิธีการคำนวณทำเหมือนกับการหาค่าของหน่วยกิตสะสม คือหากเจอช่องว่างให้แสดงผลลัพธ์ออกมา และหากเจอบรรทัดสุดท้าย ให้รวมค่ามาก่อนที่จะแสดงผลออกมาอีกครั้งหนึ่ง

ผลลัพธ์ที่ได้ ด้านขวา(ของภาพ)คือระดับคะแนนสะสมของแต่ละเทอม ด้านซ้าย(ของภาพ)คือหน่วยกิตสะสมของแต่ละเทอม

ในการแสดงผลของเกรดเฉลี่ยนั้น จะไม่ทำการปัดเศษ แต่จะมองเป็นเลข 2 ตำแหน่ง จึงได้ใช้โค้ดที่ให้แสดงผลทศนิยม 2 ตำแหน่ง และไม่ปัดเศษ

ผลลัพธ์ที่ได้จากการใส่โค้ดกำหนดทศนิยม คือเกรดที่ได้จะแสดงผลเป็นเลขทศนิยม 2 ตำแหน่ง และไม่มีการปัดเศษขึ้น

ใส่ความหมายของแต่ละ Attribute ว่า Row ไหน แสดงถึงค่าของอะไร

ผลลัพธ์ที่ได้หลังใส่ค่าของตำแหน่งต่างๆ


- what you have done/learned
1. เรียนรู้วิธีการอ่าน CSV ผ่านการเขียนโค้ดภาษา Python
2. เรียนรู้วิธีการแก้ปัญหาของการอ่านไฟล์ CSV ผ่านภาษา Python

- any problem/solution
1. ในตอนแรกไม่ทราบวิธีการตรวจสอบบรรทัดสุดท้ายของไฟล์ CSV จึงทำให้เกิดปัญหาการไม่ถูกนำมาใช้ของบรรทัดสุดท้าย เนื่องจากสั่งให้ตรวจสอบบรรทัดที่ว่างก่อนแสดงผลลัพธ์ (วิธีแก้ไขอยู่ใน reference)
2. ไม่รู้วิธีการอ่านค่าทศนิยม 2 ตำแหน่ง โดยไม่ทำการปัดเศษของภาษา Python (วิธีแก้ไขอยู่ใน reference)

- decision
1. ตัดสินใจที่จะใช้ภาษา Python ในการอ่านไฟล์ CSV

- related info/link/reference
1. การอ่านไฟล์ CSV ผ่านภาษา Python
2. แก้ปัญหาการอ่านค่าบรรทัดสุดท้าย
3. แก้ปัญหาการอ่านค่าทศนิยม 2 ตำแหน่งโดยไม่ทำการปัดเศษ

วันพุธที่ 10 มกราคม พ.ศ. 2561

คำนวณเกรดเฉลี่ยโดยใช้ Google spreadsheets




จากภาพจะเห็นว่า

- เกรดจะต้องเทียบจากตัวหนังสือเป็นตัวเลขเสียก่อน โดยใช้คำสั่ง if else ดังตัวอย่าง =IF(F2="A",4,IF(F2="B+",3.5,IF(F2="B",3,IF(F2="C+",2.5,IF(F2="C",2, IF(F2="D+",1.5,IF(F2="D",1,IF(F2="F",0,IF(F2="I","I"))))))))) จะกล่าวได้ว่า เกรด A = 4 เกรด B+ = 3.5 เกรด B = 3 เกรด C+ = 2.5 เกรด C = 2 เกรด D+ = 1.5 เกรด D = 1 เกรด F = 0 และเกรด I = I เนื่องจากไม่นำมาคิดเกรดเฉลี่ย

- การนำแต้มระดับคะแนนมาคิด หาได้จากสูตร =SUMPRODUCT(D1:D9,G1:G9) กล่าวได้ว่าเป็นการนำ D1xG1 + D2xG2 + ... + D9xG9 ซึ่งก็คือ 1x3 + 3x2.5 + ... + 1x3.5 หรือก็คือการนำเกรดคูณกับหน่วยกิตนั่นเอง

- ส่วนการรวมหน่วยกิตที่ได้ในเทอมนั้นๆ ใช้สูตร =SUM(D2:D9) คือการบวกกันตั้งแต่ D2 ถึง D9

- ส่วนสุดท้าย การคิดเกรดเฉลี่ย คือการนำแต้มระดับคะแนนที่ได้หารด้วยหน่วยกิตรวม ซึ่งใช้สูตร =FLOOR(DIVIDE(D12, D10),0.01) ในที่นี้ DIVIDE(D12,D10) คือการหาเกรดเฉลี่ย ส่วน FLOOR(value,0.01) นั้น ใส่มาเพื่อให้แสดงเกรดเฉลี่ยเพียง 2 ตำแหน่ง โดยไม่ปัดเท่านั้น

- what you have done/learned
1. เรียนรู้วิธีการใช้ Google spreadsheets
2. เรียนรู้สูตรต่างๆ และวิธีการใช้งานสูตรนั้นๆ

- any problem/solution
1. ในตอนแรกไม่ทราบวิธีการเทียบเกรดจากตัวหนังสือเป็นตัวเลข จึงศึกษาจากเว็บที่แนบไปข้างล่าง
2. ไม่รู้วิธีการให้สูตร 2 สูตรพร้อมกันใน 1 Cell ต้องใช้วิธีการลองผิดลองถูก จนได้ในที่สุด

- decision
1. ตัดสินใจที่จะแยกเกรดออกเป็นเทอมๆ ในคราวแรกได้นำทุกวิชามารวมกัน
2. ตัดสินใจใช้รูปแบบเหมือนเว็บประกาศผลการเรียน คือมีเลขประจำวิชา ชื่อวิชา หน่วยกิต ตอนเรียน และผลการเรียน

- related info/link/reference

Link Video Presentation Resort Managemant System Project.

Video Presentation Resort Managemant System Project. จัดทำโดย พากษ์เสียง: คุณาสิน  ทองมณี  5801012620011 ลำดับภาพ: สุพิชชา  ศรีศิริ...