sondmk header
SQL SERVER เบื้องต้น

SQL SERVER :: SELECT + DISTINCT (การใช้ DISTINCT ร่วมกับ Function)

Post by Goborijung at 2019-12-09 13:22:43 | ID: 250

Ex.
-- การหาค่าเฉลี่ยของราคาสินค้าทั้งหมด
SELECT AVG(ListPrice)
FROM Product

-- การหาค่าเฉลี่ย โดยตัดราคาที่ซ้ำกันออกก่อน แล้วค่อยหาค่าเฉลี่ย
SELECT AVG(DISTINCT ListPrice)
FROM Product

SQL SERVER :: SELECT + DISTINCT (จำกัดแถวที่มีค่าซ้ำกันออกไป หรือ เอาเฉพาะแถวที่ไม่ซ้ำกัน)

Post by Goborijung at 2019-12-09 13:17:10 | ID: 249

Ex.
SELECT DISTINCT Color
FROM Product
WHERE Color IS NOT NULL
ORDER BY Color

หรือจะใช้ GROUP BY แทนก็ได้

SELECT Color
FROM Product
WHERE Color IS NOT NULL
GROUP BY Color
ORDER BY Color

SQL SERVER :: SELECT + GROUP BY

Post by Goborijung at 2019-12-09 10:19:49 | ID: 243

SELECT column_id 
SUM(column_name) AS new_var 
FROM table_name
WHERE YEAR(column_date) = 2019
GROUP BY column_id

Ex.
SELECT CustomerID
SUM(SubTotal) AS Total, COUNT(*) AS TotalBill
FROM SalesOrder
WHERE YEAR(OrderDate) = 2012
GROUP BY CustomerID

SQL SERVER :: SELECT + HAVING

Post by Goborijung at 2021-01-15 15:12:44 | ID: 246

คำสั่ง HAVING ใช้กรองข้อมูลที่ได้จาก GROUP BY  
HAVING จะใช้ตรวจสอบผลที่ได้จากการจัดกลุ่มแล้วเท่านั้น

Ex.
SELECT CustomerID SUM(SubTotal) AS Total, COUNT(*) AS TotalBill
FROM SalesOrder
WHERE YEAR(OrderDate) = 2019
GROUP BY CustomerID
HAVING SUM(SubTotal) >= 100000

จากตัวอย่าง จะเห็นว่าเงื่อนไข WHERE เป็นการดึงข้อมูลเฉพาะปี 2019
จากนั้น จะจัดกลุ่มและหาผลรวมของยอดซื้อ
จากนี้น จะนำผลรวมไปตรวจสอบว่า มียอดสั่งซื้อตั้งแต่ 100,000 บาทขึ้นไปหรือไม่
ถ้ามีก็ให้แสดงข้อมูลออกมา

>> ตัวอย่าง Query จริง (gssv2)

SELECT PONo, SUM(UnitCost) AS TotalUnitCost, COUNT(*) AS TotalBill
FROM TM_PO
WHERE YEAR(PODate) = 2019
GROUP BY PONo
HAVING SUM(UnitCost) >= 100000


SQL SERVER :: SELECT + INNER JOIN (ดึงข้อมูลโดยการ JOIN ตารางเข้าด้วยกัน)

Post by Goborijung at 2019-12-10 09:12:07 | ID: 258

INNER JOIN
เป็นการเชื่อมตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยอาศัยคอลัมที่มีความสัมพันธ์กัน มาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน
เงื่อนไขคือ ดึงเฉพาะคอลัมที่มีข้อมูลตรงกัน จากทั้งสองตาราง

Ex.
SELECT * FROM table_a
INNER JOIN table_b
ON table_a.ProductID = table_b.ProductID

หรือ

SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] u 
INNER JOIN Section s
ON u.Section = s.OID
WHERE u.NickName IS NOT NULL

หรือ

SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] AS u 
INNER JOIN Section AS s
ON u.Section = s.OID
WHERE u.NickName IS NOT NULL

SQL SERVER :: SELECT + INTO (การดึงข้อมูลจากตารางเดิม ไปสร้างเป็นข้อมูลของตารางใหม่)

Post by Goborijung at 2019-12-09 14:30:43 | ID: 254

Ex.
SELECT ContactID,Name,LastName
INTO new_table
FROM old_table

SQL SERVER :: SELECT + NTILE (การใช้ NTILE ในการแบ่งกลุ่มข้อมูล)

Post by Goborijung at 2019-12-09 14:19:08 | ID: 253

Ex.
SELECT NTILE(100) OVER(ORDER BY POQty) AS No,
*
FROM TM_PO

จากตัวอย่าง จะเป็นการแบ่งกลุ่มข้อมูลออกเป็นกลุ่มละ 100

SQL SERVER :: SELECT + RANK, DENSE_RANK จัดอันดับ

Post by Goborijung at 2019-12-09 14:13:13 | ID: 252

Ex.
SELECT RANK() OVER(ORDER BY POQty) AS Ranks, 
DENSE_RANK() OVER(ORDER BY POQty) AS DenseRank, 
*
FROM TM_PO

SQL SERVER :: SELECT + TOP (ดึงข้อมูลจากแถวแรก ถึงแถวที่กำหนด)

Post by Goborijung at 2019-12-09 13:25:31 | ID: 251

Ex.
SELECT TOP 10 ProductID, Name, Color 
FROM Product

SQL SERVER :: SELECT + WITH (การใช้ WITH เก็บผลลัพธ์ชั่วคราวจากคำสั่งคิวรี่)

Post by Goborijung at 2019-12-10 08:22:23 | ID: 257

WITH UserNames (Column_OID,Column_UserName) AS 
(
	SELECT OID,(UserName+' | '+FullName+' | '+NickName)
	FROM [User]
)
SELECT * FROM UserNames WHERE Column_UserName IS NOT NULL

<<<...6789101112131415>>>

Framework

Library


เครื่องมือพัฒนาเว็บ



การออกแบบและพัฒนาเว็บไซต์


Download SourceCode



copyAllright © 2016 soundmk.com