FILTER, SORT, QUERY
ฟังก์ชันวิเคราะห์ข้อมูลแบบ Dynamic
Section titled “ฟังก์ชันวิเคราะห์ข้อมูลแบบ Dynamic”ต่างจากการใช้เมนู Data > Filter ที่เปลี่ยนมุมมองของตารางเดิม — ฟังก์ชัน FILTER(), SORT(), QUERY() สร้างผลลัพธ์ใหม่ที่อัปเดตอัตโนมัติเมื่อข้อมูลต้นทางเปลี่ยน
FILTER() — กรองข้อมูลด้วยเงื่อนไข
Section titled “FILTER() — กรองข้อมูลด้วยเงื่อนไข”=FILTER(range, condition1, [condition2, ...])ตัวอย่างข้อมูล
Section titled “ตัวอย่างข้อมูล”สมมติมีข้อมูลขายสินค้าใน A1:D100:
| Product | Category | Price | Qty |
|---|---|---|---|
| Widget A | Electronics | 500 | 10 |
| Gadget B | Electronics | 1200 | 5 |
| Book C | Stationery | 150 | 50 |
สูตร FILTER
Section titled “สูตร FILTER”=FILTER(A2:D100, C2:C100 > 200)→ แสดงเฉพาะแถวที่ Price > 200
=FILTER(A2:D100, B2:B100 = "Electronics")→ แสดงเฉพาะ Electronics
=FILTER(A2:D100, B2:B100 = "Electronics", C2:C100 > 300)→ Electronics ที่ราคา > 300 (AND condition)
=FILTER(A2:D100, (B2:B100 = "Electronics") + (B2:B100 = "Stationery"))→ Electronics หรือ Stationery (OR condition ใช้ +)#include <stdio.h>typedef struct { char name[50]; int price; } Product;int main() { Product products[] = {{"Widget", 500}, {"Book", 150}}; int n = sizeof(products) / sizeof(products[0]); for (int i = 0; i < n; i++) if (products[i].price > 200) printf("%s: %d\n", products[i].name, products[i].price); return 0;}import pandas as pddf = pd.read_csv("sales.csv")filtered = df[df["Price"] > 200]electronics = df[df["Category"] == "Electronics"]SELECT * FROM products WHERE price > 200;SELECT * FROM products WHERE category = 'Electronics' AND price > 300;SORT() — เรียงข้อมูล
Section titled “SORT() — เรียงข้อมูล”=SORT(range, sort_column, is_ascending)=SORT(A2:D100, 3, FALSE)→ เรียงตาม Column 3 (Price) จากมากไปน้อย
=SORT(A2:D100, 2, TRUE, 3, FALSE)→ เรียงตาม Category (A-Z) แล้วตาม Price (มาก→น้อย)UNIQUE() — ลบรายการซ้ำ
Section titled “UNIQUE() — ลบรายการซ้ำ”=UNIQUE(B2:B100)→ แสดง Category ที่ไม่ซ้ำกัน
=SORT(UNIQUE(B2:B100))→ แสดง Category ไม่ซ้ำ เรียง A-Z#include <stdio.h>#include <stdlib.h>int compare(const void *a, const void *b) { return (*(int*)b - *(int*)a); // descending}int main() { int prices[] = {500, 150, 1200}; qsort(prices, 3, sizeof(int), compare); for (int i = 0; i < 3; i++) printf("%d\n", prices[i]); return 0;}sorted_df = df.sort_values("Price", ascending=False)unique_cats = df["Category"].unique()SELECT * FROM products ORDER BY price DESC;SELECT DISTINCT category FROM products ORDER BY category;QUERY() — SQL-like ใน Sheets
Section titled “QUERY() — SQL-like ใน Sheets”QUERY() เป็นฟังก์ชันที่ทรงพลังที่สุดใน Google Sheets — ใช้ภาษาคล้าย SQL เลือก กรอง เรียง และสรุปข้อมูลในสูตรเดียว
=QUERY(data, query_string, [headers])ตัวอย่างสูตร
Section titled “ตัวอย่างสูตร”=QUERY(A1:D100, "SELECT A, B WHERE C > 100")→ เลือกเฉพาะ Column A, B ที่ C > 100
=QUERY(A1:D100, "SELECT B, SUM(C) GROUP BY B")→ ยอดรวม Price ตาม Category
=QUERY(A1:D100, "SELECT B, AVG(C) GROUP BY B ORDER BY AVG(C) DESC")→ ราคาเฉลี่ยตาม Category เรียงจากมากไปน้อย
=QUERY(A1:D100, "SELECT A, C WHERE B = 'Electronics' ORDER BY C DESC LIMIT 5")→ Top 5 สินค้า Electronics ราคาสูงสุด
=QUERY(A1:D100, "SELECT B, COUNT(A) GROUP BY B LABEL COUNT(A) 'จำนวน'")→ นับจำนวนสินค้าแต่ละ Category พร้อมตั้งชื่อหัวคอลัมน์ใช้ Cell Reference ใน QUERY
Section titled “ใช้ Cell Reference ใน QUERY”=QUERY(A1:D100, "SELECT * WHERE B = '"&F1&"'")→ กรองตาม Category ที่ผู้ใช้พิมพ์ใน F1
=QUERY(A1:D100, "SELECT * WHERE C > "&G1)→ กรองตาม Price ที่ผู้ใช้ใส่ใน G1// C ไม่มี built-in query// ใช้ SQLite library สำหรับ SQL ใน C// sqlite3_exec(db, "SELECT * WHERE price > 100", ...);# pandasql ให้ใช้ SQL กับ DataFramefrom pandasql import sqldfresult = sqldf("SELECT Category, SUM(Price) FROM df GROUP BY Category")# หรือ pandas nativedf.groupby("Category")["Price"].sum()SELECT category, SUM(price) AS total, AVG(price) AS avg_priceFROM productsGROUP BY categoryORDER BY total DESCLIMIT 5;| ฟังก์ชัน | ใช้ทำอะไร | เทียบกับ SQL |
|---|---|---|
FILTER() | กรองแถวตามเงื่อนไข | WHERE |
SORT() | เรียงลำดับ | ORDER BY |
UNIQUE() | ลบรายการซ้ำ | DISTINCT |
QUERY() | ทำได้ทุกอย่างข้างบน + GROUP BY | SELECT … |