ปรับค่ารหัสจากค่าก่อนหน้า การเลือกและอัปเดตแถวในครั้งเดียว – SQL_CALC_FOUND_ROWS ช่องการคำนวณ Pobudova

คุณค้นพบวิธีที่จะเป็นนักวิโคริสต์จากใคร? ฟังก์ชันนับใน SQL Server (Transact-SQL) พร้อมไวยากรณ์และแอปพลิเคชัน

คำอธิบาย

ใน SQL Server (Transact-SQL) ฟังก์ชันนับหมุนแถวจำนวนหนึ่งของฟิลด์เพื่อสร้างชุดผลลัพธ์

ไวยากรณ์

ไวยากรณ์สำหรับฟังก์ชัน COUNT ใน SQL Server (Transact-SQL):

ไวยากรณ์ ABO ของฟังก์ชัน COUNT เมื่อจัดกลุ่มผลลัพธ์ของคำสั่งตั้งแต่หนึ่งคำสั่งขึ้นไป:

พารามิเตอร์ไคอาร์กิวเมนต์

expression1 , expression2 , … expression_n
นิพจน์ที่ไม่รวมอยู่ในฟังก์ชัน COUNT อาจรวมไว้หน้า GROUP BY clause เช่น SQL clause
integrated_expression - นี่คือกรณีหรือนิพจน์ที่ไม่รองรับค่า NULL
ตาราง — ตารางที่จำเป็นต้องดึงข้อมูลบันทึก แม้ว่าจะมีเพียงตารางเดียว ตารางนั้นก็จะถูกจัดเรียงใหม่ในคำสั่ง FROM
เงื่อนไข WHERE – ไม่ได้พูดอย่างเคร่งครัด โปรดทราบว่าคุณต้องบันทึกสำหรับรายการที่เลือก

ไม่ใช่ค่า NULL

ไม่ใช่ทุกคนที่เข้าใจ แต่ฟังก์ชัน COUNT ในบันทึกสำคัญโดยที่ค่าที่กำหนดใน COUNT (aggregate_expression) ไม่เท่ากับ NULL หากคุณป้อนค่า NULL ค่านั้นจะไม่เปิดจนกว่า COUNT จะชัดเจนยิ่งขึ้น

ลองดูตัวอย่างฟังก์ชัน COUNT ซึ่งแสดงให้เห็นว่าค่า NULL ได้รับการประเมินโดยฟังก์ชัน COUNT อย่างไร

ตัวอย่างเช่น หากคุณมีตารางชื่อตลาด:

หมายเลข COUNT นี้คือ 3 ดังนั้นค่า market_id ทั้งหมดในชุดผลลัพธ์จึงไม่เป็นโมฆะ

อย่างไรก็ตาม หากคุณรันคำสั่ง SELECT ถัดไป ซึ่งใช้แทนฟังก์ชัน COUNT:

ธุรกรรม-SQL

SELECT COUNT(filials) จากตลาด; --ผลลัพธ์: 1

COUNT นี้จะถูกหมุนเป็น 1 ดังนั้นจะมีเพียงค่าเดียวของลูกกตัญญูในชุดผลลัพธ์เท่านั้นที่จะถูกเขียนว่า NOT NULL หากนี่คือแถวแรก filials=yes จะถูกระบุ นี่คือแถวเดียวที่รวมไว้ก่อนที่จะคำนวณฟังก์ชัน COUNT

ซาสโตซูวานยา

ฟังก์ชัน COUNT อาจได้รับการแก้ไขใน SQL Server เวอร์ชันใหม่กว่า (Transact-SQL):
เซิร์ฟเวอร์ SQL vNext, เซิร์ฟเวอร์ SQL 2016, เซิร์ฟเวอร์ SQL 2015, เซิร์ฟเวอร์ SQL 2014, เซิร์ฟเวอร์ SQL 2012, เซิร์ฟเวอร์ SQL 2008 R2, เซิร์ฟเวอร์ SQL 2008, เซิร์ฟเวอร์ SQL 2005

ตัวอย่างที่มีหนึ่งฟิลด์

มาดูวิธีใช้ฟังก์ชัน COUNT ของ SQL Server เพื่อทำความเข้าใจวิธีใช้ฟังก์ชัน COUNT ใน SQL Server (Transact-SQL)

ตัวอย่างเช่น คุณสามารถดูจำนวนผู้ติดต่อที่คุณมีโดยใช้ Last_name = Rasputin

ในแอปพลิเคชันนี้ มีการระบุฟังก์ชัน COUNT ด้วยนามแฝง COUNT (*) จำนวนผู้ติดต่อ ดังนั้นในชุดผลลัพธ์ "จำนวนผู้ติดต่อ" จะแสดงเป็นชื่อของฟิลด์

ตัวอย่างจาก Wikoristanny DISTINCT

คุณสามารถใช้ตัวดำเนินการ DISTINCT ในฟังก์ชัน COUNT ได้ ตัวอย่างเช่น คำสั่ง SQL ต่อไปนี้จะหมุนเวียนจำนวนแผนกที่ไม่ซ้ำกัน แม้ว่าแผนกใดแผนกหนึ่งจะมี first_name = 'Samvel' ก็ตาม

ในการกำหนดจำนวนบันทึกในตาราง MySQL คุณต้องใช้ฟังก์ชันพิเศษ COUNT()

ฟังก์ชัน COUNT() จะหมุนจำนวนเรคคอร์ดในตารางที่ตรงตามเกณฑ์ที่กำหนด

ฟังก์ชัน COUNT(expr) จะคำนึงถึงแถวเหล่านั้นซึ่งผลลัพธ์ของ expr ไม่เป็น NULL เสมอ

ปัญหาของกฎนี้คือฟังก์ชัน COUNT() ใช้ดาวเป็นอาร์กิวเมนต์ - COUNT(*) ในกรณีนี้ แถวทั้งหมดจะได้รับการพิจารณา ไม่ว่าจะเป็น NULL หรือ NOT NULL

ตัวอย่างเช่น ฟังก์ชัน COUNT(*) จะหมุนเวียนจำนวนระเบียนทั้งหมดในตาราง:

เลือก COUNT(*) จาก table_name

วิธีจัดเก็บบันทึกจำนวนมากและแสดงบนหน้าจอ

ตัวอย่างโค้ด PHP+MySQL สำหรับการอัพเดตและแสดงจำนวนแถว:

$res = mysql_query("SELECT COUNT(*) FROM table_name") $row = mysql_fetch_row($res); $รวม = $แถว; // บันทึกทั้งหมดสะท้อน $ รวม; -

ตัวอย่างนี้แสดงให้เห็นเวอร์ชันที่ง่ายที่สุดของฟังก์ชัน COUNT() หรือสามารถเพิ่มการตั้งค่าอื่นๆ ให้กับฟังก์ชันนี้ได้

หลังจากระบุคอลัมน์ตารางเป็นพารามิเตอร์แล้ว ฟังก์ชัน COUNT(column_name) จะหมุนจำนวนระเบียนในคอลัมน์นั้นเพื่อแทนที่ค่า NULL บันทึกที่มีค่า NULL จะถูกละเว้น

เลือก COUNT(column_name) จาก table_name

ไม่สามารถใช้ฟังก์ชัน mysql_num_rows() ได้ ดังนั้นหากต้องการทราบว่ามีกี่ระเบียน คุณต้องป้อน SELECT * FROM db เพื่อเลือกระเบียนทั้งหมด แต่ควรใช้ฟังก์ชันนับจะดีกว่า

$result = mysql_query("SELECT COUNT(*) as rec FROM db");

ฟังก์ชั่นที่มีประโยชน์ของ COUNT() ในแอปพลิเคชัน

แกนเป็นอีกส่วนหนึ่งของฟังก์ชัน COUNT() เป็นไปได้ว่ามีตารางไอศกรีมที่มีแคตตาล็อกของน้ำค้างแข็ง ซึ่งประกอบด้วยตัวระบุหมวดหมู่และชื่อของน้ำค้างแข็ง

วิลิเชนย่า

ฟังก์ชั่นกระเป๋า

ในเวอร์ชันเคียวรี SQL มักจำเป็นต้องแก้ไขข้อมูลล่วงหน้า ด้วยวิธีนี้ จะมีการวิเคราะห์ฟังก์ชันและนิพจน์พิเศษ

บ่อยครั้งจำเป็นต้องค้นหาว่ามีกี่ระเบียนที่ตรงกับข้อความค้นหาหนึ่งๆค่าของคอลัมน์ตัวเลขใดๆ คือค่าสูงสุด ค่าต่ำสุด และค่าเฉลี่ย และสิ่งนี้ทำหน้าที่เป็นฟังก์ชันย่อย (ทางสถิติ รวม) ฟังก์ชัน Podbag ประมวลผลชุดบันทึก งาน เช่น WHERE หากคุณรวมไว้หน้ารายการที่ตามหลังคำสั่ง SELECT ตารางผลลัพธ์จะสามารถใช้เป็นชุดย่อยของตารางฐานข้อมูลและค่าที่คำนวณโดยใช้ฟังก์ชันเหล่านี้ ห่างไกลรายการฟังก์ชั่นกระเป๋า.

  • นับ (พารามิเตอร์ ) หมุนจำนวนรายการที่กำหนดให้กับพารามิเตอร์ หากคุณต้องการดึงข้อมูลรายการที่มีอยู่จำนวนหนึ่ง ให้ป้อนสัญลักษณ์รูปดาว (*) เป็นพารามิเตอร์การติดตาม หากคุณระบุชื่อรายการในพารามิเตอร์ ฟังก์ชันจะหมุนจำนวนรายการที่มีค่าเดียวกันกับ NULL หากต้องการกำหนดจำนวนค่าที่ต่างกันรวมกัน ให้ป้อนคีย์เวิร์ด DISTINCT ก่อนค่าการติดตาม ตัวอย่างเช่น:

เลือก COUNT(*) จากลูกค้า;

เลือก COUNT(จำนวน) จากลูกค้า;

เลือกนับ (DISTINCT Payment_amount) จากลูกค้า

เราจะดำเนินการขั้นตอนต่อไปเพื่อแจ้งให้คุณทราบเกี่ยวกับการแก้ไข:

เลือกภูมิภาค , COUNT(*) จากไคลเอนต์ ;

  • ผลรวม (พารามิเตอร์ ) หมุนจำนวนค่าที่ระบุในพารามิเตอร์คอลัมน์ สามารถเปลี่ยนพารามิเตอร์เพื่อลบชื่อของรายการได้ ตัวอย่างเช่น:

เลือกผลรวม (Sum_zamovlennya) จากลูกค้า;

ไวรัส SQL นี้จะหมุนตารางที่ประกอบด้วยหนึ่งคอลัมน์และหนึ่งระเบียน และรวมผลรวมของค่าปัจจุบันทั้งหมดในคอลัมน์ Total_Amount ในตาราง Client

สมมติว่าตารางผลลัพธ์มีค่า Order_Amount แสดงเป็นรูเบิล และเราต้องคำนวณจำนวนเงินทั้งหมดเป็นดอลลาร์ หากอัตราแลกเปลี่ยนปัจจุบันเท่ากัน เช่น 27.8 คุณสามารถได้ผลลัพธ์ที่ต้องการโดยใช้สูตรต่อไปนี้:

เลือกผลรวม (Sum_zamovlennya*27.8) จากลูกค้า;

  • AVG (พารามิเตอร์ ) หมุนค่าเฉลี่ยเลขคณิตของค่าทั้งหมดที่ระบุในพารามิเตอร์คอลัมน์ พารามิเตอร์สามารถใช้เพื่อล้างแค้นให้กับสถานการณ์ได้ ตัวอย่างเช่น:

เลือก AVG (Amount_amount) จากลูกค้า

เลือก AVG (Amount_amount*27.8) จากลูกค้า

ที่ไหน ภูมิภาค<>"พิฟนิชโน-3เวสต์";

  • สูงสุด (พารามิเตอร์ ) หมุนค่าสูงสุดในคอลัมน์ที่ระบุในพารามิเตอร์ พารามิเตอร์ยังสามารถใช้เพื่อแก้ไขสถานการณ์ได้อีกด้วย ตัวอย่างเช่น:

เลือกสูงสุด (จำนวนการซื้อ) จากลูกค้า

เลือกสูงสุด(Amount_amount*27.8) จากลูกค้า

ที่ไหน ภูมิภาค<>"พิฟนิชโน-3เวสต์";

  • ขั้นต่ำ (พารามิเตอร์ ) หมุนค่าต่ำสุดในคอลัมน์ที่ระบุในพารามิเตอร์ พารามิเตอร์สามารถใช้เพื่อล้างแค้นให้กับสถานการณ์ได้ ตัวอย่างเช่น:

เลือก MIN(Amount_amount) จากลูกค้า

เลือก MIN (จำนวน___*27.8) จากลูกค้า

ที่ไหน ภูมิภาค<>"พิฟนิชโน-3เวสต์";

ในความเป็นจริงมักจำเป็นต้องเปิดตารางย่อยเพื่อแสดงค่ารวม ค่าเฉลี่ย สูงสุด และต่ำสุดของคอลัมน์ตัวเลข เพื่อจุดประสงค์นี้ ให้เลือกการจัดกลุ่ม (GROUP BY) และฟังก์ชันย่อย

เลือกภูมิภาค SUM (Sum_zamovlennya) จากลูกค้า

จัดกลุ่มตามภูมิภาค

ผลลัพธ์คือตารางที่คุณสามารถป้อนชื่อภูมิภาคและผลรวมย่อยเพื่อดึงดูดลูกค้าทั้งหมดจากบางภูมิภาค (รูปที่ 5)

ตอนนี้เรามาดูการดึงข้อมูลกระเป๋าทั้งหมดสำหรับภูมิภาคกัน:

เลือกภูมิภาค, SUM, AVG (Sum_zamovlennya), MAX (Suma_zamovlennya),ขั้นต่ำ (เงิน_จำนวน)

จากลูกค้า

จัดกลุ่มตามภูมิภาค

ผลลัพธ์จะแสดงในตารางที่แสดงในรูปที่. 8. ในแอปพลิเคชัน พื้นที่เอาท์พุต-เวสต์ของมุมมองในตารางผลลัพธ์มีมากกว่าหนึ่งเรกคอร์ด นอกจากนี้ในตารางผลลัพธ์ ฟังก์ชันย่อยที่แตกต่างกันจะให้ค่าที่แตกต่างกัน

เล็ก 8. ตารางผลรวมธุรกรรม Pidsumkova ตามภูมิภาค

เมื่อเลือกฟังก์ชันรองในรายการคอลัมน์ในคำสั่ง SELECT ส่วนหัวของคอลัมน์ที่เกี่ยวข้องในตารางผลลัพธ์จะมีลักษณะเช่น Expr1001, Expr1002 เป็นต้น (หรือสิ่งที่คล้ายกันขึ้นอยู่กับการนำ SQL ไปใช้) ส่วนหัว Prote สำหรับความหมายของฟังก์ชันย่อยและฟังก์ชันอื่นๆ สามารถตั้งค่าได้ตามดุลยพินิจของคุณเอง เพื่อจุดประสงค์นี้ หลังจากคำสั่งในคำสั่ง SELECT ให้ป้อนนิพจน์ต่อไปนี้:

AS header_stovptsya

คำหลัก AS (yak) หมายความว่าตารางผลลัพธ์มีส่วนย่อยที่รับผิดชอบส่วนหัวที่ป้อนหลังจาก AS ชื่อที่ได้รับมอบหมายเรียกอีกอย่างว่านามแฝง ในแอปพลิเคชัน (รูปที่ 9) มีการระบุนามแฝงสำหรับคะแนนทั้งหมดที่นับ:

เลือกภูมิภาค

ผลรวม (Sum_zamovlennya) AS [ซากัลนา sum_zamovlennya],

เฉลี่ย (Sum_zamovlennya) AS [เฉลี่ย sum_zamovlennya],

MAX(Amount_of_order) AS สูงสุด,

นาที (Sum_zamovlennya) AS ขั้นต่ำ,

จากลูกค้า

จัดกลุ่มตามภูมิภาค

เล็ก 9. ตารางผลรวมธุรกรรมของ Podsumkova ตามภูมิภาคจากสถานะของนามแฝงของบริษัท

นามแฝงซึ่งประกอบด้วยคำหลายคำคั่นด้วยช่องว่าง วางอยู่ใกล้แขนสี่เหลี่ยม

ฟังก์ชันย่อยสามารถใช้ได้ในส่วนคำสั่ง SELECT และ HAVING แต่ไม่สามารถใช้ในส่วนคำสั่ง WHERE ได้ ตัวดำเนินการ HAVING นั้นคล้ายคลึงกับตัวดำเนินการ WHERE ยกเว้นว่าจะเลือกบันทึกในกลุ่มเมื่ออยู่ภายใต้ WHERE

เป็นไปได้ที่คุณจะต้องพิจารณาว่าภูมิภาคใดมีลูกค้ามากกว่าหนึ่งราย วิธีนี้สามารถสรุปได้ด้วยประโยคต่อไปนี้:

เลือกภูมิภาค จำนวน(*)

จากลูกค้า

จัดกลุ่มตามภูมิภาคที่มี COUNT(*) > 1;

ฟังก์ชันการประมวลผลค่า

เมื่อทำงานกับข้อมูล คุณมักจะต้องประมวลผลข้อมูล (จัดเรียงใหม่ให้อยู่ในรูปแบบที่ต้องการ): ดูแถวในแถว เอาเส้นลวดออกและสรุปช่องว่าง ปัดเศษตัวเลข คำนวณรากที่สอง และคำนวณชั่วโมงที่แน่นอน SQL มีฟังก์ชันสามประเภท:

  • ฟังก์ชันแถว;
  • ฟังก์ชันตัวเลข
  • ฟังก์ชั่นวันที่-ชั่วโมง

ฟังก์ชันแถว

ฟังก์ชันแถวรับพารามิเตอร์แถวและหมุนแถวเป็น NULL หลังจากประมวลผล

  • สตริงย่อย (แถว จากซัง)หมุนลำดับเพื่อออกจากการชาร์จ ซึ่งระบุเป็นพารามิเตอร์แถว. สัญญา เริ่มต้นด้วยสัญลักษณ์ หมายเลขประจำเครื่องของแต่ละตัวบ่งชี้ในพารามิเตอร์ cob และลงท้ายด้วย dovzhin ที่ระบุในพารามิเตอร์ dozhina การเรียงลำดับสัญลักษณ์ของแถวจะดำเนินการด้วยมือซ้าย โดยเริ่มจาก 1 แขนสี่เหลี่ยมที่นี่ระบุเฉพาะการวางตำแหน่งในสัญลักษณ์เหล่านั้นไม่ตรงไปตรงมา ยาคโช วิราซสำหรับโดฟซิน ไม่หมุนกลับก็หมุนเป็นแถวซัง และจนถึงจุดสิ้นสุดของแถวเอาต์พุต ค่าพารามิเตอร์ซังและโดฟซิน่า คุณต้องเลือกเพื่อให้แถวที่คุณกำลังมองหาอยู่ตรงกลางของแถวผลลัพธ์อย่างมีประสิทธิภาพ มิฉะนั้น ฟังก์ชัน SUBSTRING จะส่งกลับค่า NULL

ตัวอย่างเช่น:

SUBSTRING ("เรียน Masha!" จาก 9 ต่อ 4) เปลี่ยน "Masha";

SUBSTRING ("เรียน Masha!" จาก 9) เปลี่ยน "Masha!";

SUBSTRING("เรียน Masha!" จาก 15) หมุนเป็น NULL

คุณสามารถใช้ฟังก์ชันนี้ในนิพจน์ SQL ได้ เช่น:

เลือก * จากไคลเอนต์

โดยที่ SUBSTRING (ภูมิภาคจาก 1 ต่อ 5) = "Pivnich";

  • บน (แถว ) ¦ แปลอักขระทั้งหมดที่ระบุในพารามิเตอร์แถวเป็นตัวพิมพ์ใหญ่
  • ล่าง (แถว ) แปลงอักขระทั้งหมดที่ระบุในพารามิเตอร์แถวให้เป็นตัวพิมพ์เล็ก
  • TRIM (นำ | ท้าย | ทั้งสอง ["สัญลักษณ์"] จากแถว ) แสดงสัญลักษณ์การชาร์จนำหน้า (LEADING) ต่อท้าย (TRAILING) หรือ (ทั้งสอง) ด้านหลังสัญลักษณ์ส่งเสริมการขายที่ปรากฏคือช่องว่าง (" ") ซึ่งไม่อาจระบุได้ ส่วนใหญ่แล้วฟังก์ชันนี้จะใช้สำหรับการหักล้างการหักบัญชี

ตัวอย่างเช่น:

TRIM (นำ "" จาก "เมืองเซนต์ปีเตอร์สเบิร์ก") ล้อมรอบ "เมืองเซนต์ปีเตอร์สเบิร์ก";

TRIM (TRALING "จาก" เมืองเซนต์ปีเตอร์สเบิร์ก") หมุน "สถานที่ของเซนต์ปีเตอร์สเบิร์ก";

TRIM (ทั้ง ""จาก" สถานที่เซนต์ปีเตอร์สเบิร์ก") เปลี่ยน "สถานที่เซนต์ปีเตอร์สเบิร์ก";

TRIM(ทั้งจาก "เมืองเซนต์ปีเตอร์สเบิร์ก") หมุน "เมืองเซนต์ปีเตอร์สเบิร์ก";

TRIM(ทั้ง "g" จาก "เมืองเซนต์ปีเตอร์สเบิร์ก") เปลี่ยน "ครอบครัวเซนต์ปีเตอร์สเบิร์ก"

ในบรรดาฟังก์ชันเหล่านี้ ฟังก์ชันที่ใช้บ่อยที่สุดคือ SUBSTRING() และ TRIM()

ฟังก์ชันตัวเลข

ฟังก์ชันตัวเลขเป็นพารามิเตอร์ สามารถรับข้อมูลประเภทตัวเลขได้ แต่จะหมุนตัวเลข NULL (ค่าที่ไม่มีค่า) แทน

  • ตำแหน่ง ( ทั้งแถวในแถว) ¦ ค้นหารายการของแถวเป้าหมายในค่าแถว หากการค้นหาสำเร็จ ฟังก์ชันจะหมุนหมายเลขตำแหน่งของอักขระตัวแรก ไม่เช่นนั้น 0 หากทั้งแถวมีค่าสองเท่าเป็นศูนย์ (เช่น แถว " ") ฟังก์ชันจะหมุน 1 หากคุณต้องการ พารามิเตอร์เพื่อให้มีค่า NULL จากนั้นหมุน มี NULL การเรียงลำดับสัญลักษณ์แถวทำได้ด้วยมือซ้าย โดยเริ่มจาก 1

ตัวอย่างเช่น:

ตำแหน่ง ("e" ใน "สวัสดีทุกคน") หมุน 5;

ตำแหน่ง (“ทุกคน” ใน “สวัสดีทุกคน”) หมุน 8;

ตำแหน่ง (" "สวัสดีทุกคน") หมุน 1;

ตำแหน่ง("สวัสดี!" ใน "สวัสดีทุกคน") หมุน 0

ตารางลูกค้า (div. รูปที่ 1) มีส่วนที่อยู่ ถัดจากชื่อสถานที่ รหัสไปรษณีย์ ชื่อถนน และข้อมูลอื่นๆ คุณอาจต้องเลือกบันทึกเกี่ยวกับลูกค้าที่ผัดวันประกันพรุ่ง ดังนั้น หากคุณต้องการเลือกเรกคอร์ดสำหรับลูกค้าที่อาศัยอยู่ในเซนต์ปีเตอร์สเบิร์ก คุณสามารถใช้แบบสอบถาม SQL ต่อไปนี้ได้อย่างรวดเร็ว:

เลือก * จากไคลเอนต์

ตำแหน่งที่ไหน ("เซนต์ปีเตอร์สเบิร์ก" ในที่อยู่) > 0;

เรียน คำถามง่ายๆ เกี่ยวกับการเลือกข้อมูลนี้สามารถกำหนดสูตรให้แตกต่างออกไปได้:

เลือก * จากไคลเอนต์

ที่อยู่เช่น "% ปีเตอร์สเบิร์ก %";

  • แยก (พารามิเตอร์ ) ¦ แยกองค์ประกอบออกจากค่าประเภทวันที่-ชั่วโมงหรือจากช่วงเวลา ตัวอย่างเช่น:

สารสกัด (เดือนนับจากวันที่ "2548-10-25")เทิร์น 10

  • CHARACTER_LENGTH (แถว ) หมุนจำนวนอักขระในแถว

ตัวอย่างเช่น:

CHARACTER_LENGTH("สวัสดีทุกคน") อายุครบ 11 ปี

  • OCTET_LENGTH (แถว ) หมุนจำนวนออคเต็ต (ไบต์) ในแถว อักขระละตินหรือซีริลลิกแสดงด้วยหนึ่งไบต์ และอักขระจีนแสดงด้วยสองไบต์
  • จำนวนสมาชิก (พารามิเตอร์ ) รับคอลเลกชันขององค์ประกอบเป็นพารามิเตอร์และหมุนจำนวนองค์ประกอบในคอลเลกชัน (หมายเลขสำคัญ) คอลเลกชันอาจเป็นอาร์เรย์หรือทวีคูณเพื่อรองรับองค์ประกอบประเภทต่างๆ
  • เอบีเอส (หมายเลข ) หมุนค่าสัมบูรณ์ของตัวเลข ตัวอย่างเช่น:

เอบีเอส (-123) รอบ 123;

เอบีเอส (2 - 5) รอบ 3.

  • มธ. (หมายเลข 1, หมายเลข 2 ) เปลี่ยนส่วนที่เกินของครึ่งหนึ่งของจำนวนเต็มตัวแรกไปไว้ที่อีกจำนวนหนึ่ง ตัวอย่างเช่น:

MOD (5, ชม.) หมุน 2;

MOD (2, ชม.) หมุน 0

  • LN (หมายเลข ) หมุนลอการิทึมธรรมชาติของตัวเลข
  • EXP (หมายเลข) หมุนหมายเลข (แทนลอการิทึมธรรมชาติเป็นระดับของตัวเลข)
  • พาวเวอร์ (หมายเลข 1 หมายเลข 2 ) หมุนหมายเลข 1หมายเลข 2 (หมายเลข 1 ในขั้นตอนที่ 2)
  • SQRT (หมายเลข ) เปลี่ยนรากที่สองของตัวเลข
  • พื้น (หมายเลข ) หมุนตัวเลขที่ใหญ่ที่สุดซึ่งไม่เกินค่าที่ระบุโดยพารามิเตอร์ (ปัดเศษลง) ตัวอย่างเช่น:

พื้น (5.123) หมุน 5.0.

  • CEIL (หมายเลข) หรือ CEILING (หมายเลข ) หมุนเลขจำนวนเต็มที่น้อยที่สุดซึ่งไม่น้อยกว่าพารามิเตอร์การปัดเศษที่ระบุ) ตัวอย่างเช่น:

CEIL (5.123) หมุน 6. 0.

  • WIDTH_BUCKET (number1, number2, number3, number4) หมุนตัวเลขจำนวนเต็มในช่วงระหว่าง 0 ถึง number4 + 1 พารามิเตอร์ number2 และ number3 ระบุส่วนของตัวเลข การหารในช่วงเวลาเท่ากัน ซึ่งตัวเลขที่ระบุด้วยพารามิเตอร์หมายเลข 4 ฟังก์ชั่น มันกำหนดตัวเลขให้กับช่วงเวลาที่ค่าหายไป 1 หากหมายเลข 1 อยู่ในช่วงที่กำหนด ฟังก์ชันจะหมุน 0 หรือหมายเลข 4 + 1 ตัวอย่างเช่น

WIDTH_BUCKET(3.14, 0, 9, 5) หมุน 2

ฟังก์ชั่นวันที่-ชั่วโมง

Movi SQL มีฟังก์ชันสามอย่าง เช่น การหมุนวันที่และชั่วโมงที่แน่นอน

  • วันที่ปัจจุบัน หมุนวันที่ที่แน่นอน (พิมพ์ DATE)

ตัวอย่างเช่น: 18-06-2548

  • CURRENT_TIME (หมายเลข ) หมุนชั่วโมงปัจจุบัน (ประเภท TIME) พารามิเตอร์จำนวนเต็มบ่งบอกถึงความแม่นยำของวินาที ตัวอย่างเช่น หากค่าคือ 2 วินาที วินาทีจะแสดงเป็นทศนิยมที่ใกล้ที่สุด (เศษส่วนสองหลัก):

12:39:45.27.

  • CURRENT_TIMESTAMP (หมายเลข ) หมุนวันที่และชั่วโมง (ประเภท TIMESTAMP) ตัวอย่างเช่น 18-06-2548 12:39:45.27 น. พารามิเตอร์จำนวนเต็มบ่งบอกถึงความแม่นยำของวินาที

โปรดทราบว่าวันที่และชั่วโมงที่ใช้ฟังก์ชันเหล่านี้หมุนเวียนไม่ใช่ประเภทสัญลักษณ์ หากคุณต้องการป้อนพวกมันในรูปแบบของแถวอักขระ เพื่อจุดประสงค์นี้ คุณต้องใช้ฟังก์ชันการแปลง CAST ()

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

นิพจน์จากการคำนวณ

นิพจน์ที่คำนวณจะมาจากค่าคงที่ (ตัวเลข แถว ตรรกะ) ฟังก์ชัน ชื่อฟิลด์ และข้อมูลประเภทอื่นๆ ที่เชื่อมต่อกันด้วยเลขคณิต แถว ตรรกะ และตัวดำเนินการอื่นๆ ในลักษณะของตนเอง นิพจน์สามารถรวมกับตัวดำเนินการเพิ่มเติมของนิพจน์คลังสินค้า (คลังสินค้า) ขนาดใหญ่ได้ สำหรับเครูวานะ จะใช้แขนกลมตามลำดับหมายเลขผู้ชนะ

ตัวดำเนินการเชิงตรรกะฟังก์ชัน AND, OR และ NOT ได้ถูกมองมาก่อน

ตัวดำเนินการทางคณิตศาสตร์:

  • - เพิ่มเติม;
  • - vidnіmannya;
  • * ¦ การคูณ;
  • - โพดิล.

ตัวดำเนินการสตริงมีตัวดำเนินการต่อหรือรวมแถวเพียงตัวเดียวเท่านั้น (| |) ในการใช้งาน SQL บางอย่าง (เช่น Microsoft Access) จะใช้สัญลักษณ์ (+) แทน (| |) ตัวดำเนินการต่อข้อมูลจะกำหนดแถวอื่นที่ส่วนท้ายของก้นแรก เช่นนี้

"ซาช่า" | - "ที่จะรัก" | - "โบกมือ"

ปรากฎว่านี่เป็นผลมาจากแถว "Love Masha"

เมื่อพับนิพจน์ การติดตามจะถูกเย็บเพื่อให้ตัวถูกดำเนินการของตัวดำเนินการเป็นประเภทที่ถูกต้องขนาดเล็ก ตัวอย่างเช่น ไม่สามารถยอมรับนิพจน์: 123 + “Sasha” ได้ ดังนั้นตัวดำเนินการทางคณิตศาสตร์จึงถูกเพิ่มเข้าไปในตัวถูกดำเนินการแถว

นิพจน์ที่คำนวณสามารถพบได้หลังคำสั่ง SELECT รวมถึงในใจของคำสั่ง WHERE และ HAVIเอ็น.จี.

มาดูก้นกันบ้าง

ให้ตารางการขายแสดงรายการประเภทสินค้า ปริมาณ และราคา และเราจำเป็นต้องทราบรายได้ของผลิตภัณฑ์แต่ละประเภท หากต้องการดูรายการสินค้าหลังคำสั่ง SELECT ให้เปิด QUALITY*Price:

เลือก Product_type, จำนวน, ราคา, จำนวน*ราคาเช่น

ร่วมกันจากการขาย;

ที่นี่คีย์เวิร์ด AS (yak) ใช้เพื่อสร้างนามแฝงสำหรับข้อมูลที่กำลังคำนวณ

ในรูป 10 แสดงยอดขายตารางผลลัพธ์และป้อนตารางผลลัพธ์

เล็ก 10. ผลลัพธ์จะขึ้นอยู่กับการคำนวณรายได้ตามประเภทผิวของผลิตภัณฑ์

หากคุณต้องการทราบรายได้รวมจากการขายผลิตภัณฑ์ทั้งหมด เพียงกรอกคำถามต่อไปนี้:

เลือกผลรวม (จำนวน*ราคา) จากการขาย;

ขั้นตอนต่อไปจะขอให้คุณวางนิพจน์ที่กำลังคำนวณทั้งในรายการส่วนคำสั่งและในใจของคำสั่ง WHERE เขาเลือกจากตารางการขายผลิตภัณฑ์เหล่านั้น กำไรจากการขายมากกว่า 1,000 รายการ:

เลือก Product_type, จำนวน*ราคา AS พร้อมกัน

จากการขาย

โดยที่ ปริมาณ*ราคา > 1,000;

เป็นไปได้ว่าคุณจะต้องสร้างตารางที่มีสองคอลัมน์:

สินค้าที่ตรงกับประเภทสินค้าและราคา

ร่วมกันเพื่อแก้แค้นไวตอร์ก

แฟรกเมนต์จะถูกถ่ายโอนเพื่อให้คอลัมน์ Sales มีประเภทสัญลักษณ์ (ประเภท CHAR) ในตารางเอาต์พุต และหมวดหมู่ราคาคือ ? ตัวเลขจากนั้นเมื่อรวมข้อมูล (ติดกาว) จากคอลัมน์เหล่านี้จำเป็นต้องแปลงประเภทตัวเลขเป็นประเภทอักขระโดยใช้ฟังก์ชัน CAST () เพิ่มเติม เมื่อถูกถามซึ่งสรุปงานนี้ (รูปที่ 11):

เลือกประเภทผลิตภัณฑ์ | - " (ราคา: " | | CAST(ราคา AS CHAR(5)) | | ")" AS Item, จำนวน*ราคา AS ในครั้งเดียว

จากการขาย;

เล็ก 11. ผลลัพธ์จะรวมกับข้อมูลประเภทต่างๆ ในคอลัมน์เดียว

บันทึก. ใน Microsoft Access คำสั่งที่คล้ายกันจะมีลักษณะดังนี้:

เลือก Product_type + " (ราคา: " + Cถ (ราคา) + ")" AS สินค้า

ปริมาณ*ราคา AS ในครั้งเดียว

จากการขาย;

การแสดงออกอย่างชาญฉลาดด้วยตัวดำเนินการ CASE

ในภาษาพื้นฐาน ตัวดำเนินการเปลี่ยนแปลงทางจิตได้รับการตั้งโปรแกรมไว้ ซึ่งช่วยให้คุณสามารถควบคุมกระบวนการคำนวณได้ ขึ้นอยู่กับสิ่งที่เกิดขึ้นในใจของคุณ ใน Movi SQL ตัวดำเนินการนี้คือ CASE (สดใส ตกแต่ง คัดลอก- ใน SQL:2003 ตัวดำเนินการนี้จะหมุนเวียนค่าและยังสามารถใช้ในภาษาต่างๆ ได้อีกด้วย ไวน์มีสองรูปแบบหลัก ซึ่งเราจะดูในส่วนนี้

คำสั่ง CASE ที่มีค่า

คำสั่ง CASE ที่มีค่ามีไวยากรณ์ดังต่อไปนี้:

CASE ตรวจสอบ_ค่าแล้ว

เมื่อค่า 1 แล้วผลลัพธ์ 1

เมื่อค่า 2 แล้วผลลัพธ์ 2

. . .

เมื่อค่า N แล้วผลลัพธ์ N

อย่างอื่นผลลัพธ์X

คุณ vipadku ถ้า หมายความว่าจะต้องมีการตรวจสอบหนึ่งค่า1 ตัวดำเนินการ CASE จะหมุนค่าผลลัพธ์1 คำสั่งหลังคีย์เวิร์ด THEN (นั่น) มิฉะนั้น check_value จะเท่ากับค่า2 และหากเท่ากัน ค่าของผลลัพธ์2 จะถูกหมุน อีกกรณีหนึ่ง ค่าที่ตรวจสอบจะเท่ากับค่าปัจจุบันที่ระบุหลังคีย์เวิร์ด WHEN เป็นต้น หากค่าที่ตรวจสอบไม่เท่ากับค่าใดค่าหนึ่ง ค่านั้นจะถูกหมุนเวียนผลลัพธ์ X คำแนะนำหลังคีย์เวิร์ด ELSE (มิฉะนั้น)

คำหลัก ELSE ไม่มีผลผูกพัน เมื่อใดก็ตามที่มีค่าที่กำลังทำให้เท่ากันซึ่งไม่เท่ากับค่าที่กำลังตรวจสอบ ตัวดำเนินการ CASE จะหมุน NULL

เป็นไปได้ว่าตามตารางไคลเอนต์ (div. รูปที่ 1) คุณต้องเลือกตารางที่ชื่อของภูมิภาคจะถูกแทนที่ด้วยหมายเลขรหัส เนื่องจากตารางผลลัพธ์ของภูมิภาคต่างๆ ไม่จำเป็นต้องสมบูรณ์ ดังนั้นเพื่อให้ได้คำจำกัดความที่ดีที่สุด คุณสามารถย่อแบบสอบถามด้วยตนเองด้วยคำสั่ง CASE:

เลือกชื่อ ที่อยู่

กรณี ภูมิภาค

เมื่อ "มอสโก" แล้วก็ "77"

เมื่อ "ภูมิภาคตเวียร์สค์" แล้ว "69"

. . .

ภูมิภาคอื่นๆ

รหัสภูมิภาค AS

จากลูกค้า;

คำสั่ง CASE เป็นการค้นหาสมอง

คำสั่ง CASE อีกรูปแบบหนึ่งจะถ่ายโอนผลการค้นหาไปยังสารบัญที่ตรงกับใจผู้ร้องเพลง:

กรณี

เมื่อใจ1 แล้วผลลัพธ์1

เมื่อผลลัพธ์ 2 แล้วผลลัพธ์ 2

. . .

เมื่อใจ N แล้วผล N

อย่างอื่นผลลัพธ์X

ตัวดำเนินการ CASE จะตรวจสอบว่าระเบียนแรกในชุดที่ระบุโดยส่วนคำสั่ง WHERE หรือทั้งตาราง ว่า WHERE ถูกต้องหรือไม่ หากเป็นเช่นนั้น CASE จะหมุนค่าของ result1 มิฉะนั้น ผู้ใดจะตรวจสอบจิตใจของตนได้ ๒. ถ้าเป็นจริงก็หมุนผลสำคัญ ฯลฯ ถ้าทุกใจไม่เปลี่ยนผลสำคัญก็หมุนเอ็กซ์ ป้อนหลังคีย์เวิร์ด ELSE

คำหลัก ELSE ไม่มีผลผูกพัน เนื่องจากจิตใจทุกวันและทุกวันไม่เปลี่ยนแปลง ตัวดำเนินการ CASE จะตัดค่า NULL หลังจากที่ผู้ดำเนินการเข้าสู่ CASE ออกจากรายการแรกแล้ว จะมีการเปลี่ยนไปใช้รายการถัดไป สิ่งนี้จะดำเนินต่อไปจนกว่าจะรวบรวมชุดบันทึกทั้งหมด

ตัวอย่างเช่น ตารางหนังสือ (ชื่อเรื่อง, ราคา) ลงท้ายด้วยค่า NULL เนื่องจากไม่มีหนังสือย่อย รายการถัดไปจะหมุนตาราง โดยที่ข้อความ "ไม่มี" จะแสดงเป็น NULL:

เลือกชื่อ

กรณี

เมื่อราคาเป็นโมฆะก็ "ไม่ชัดเจน"

นักแสดงอื่น(ราคาเป็น CHAR(8))

AS ราคา

จากหนังสือ;

ความหมายเหมือนกันหมดและแม่ประเภทเดียวกันก็มีความผิด ดังนั้นในรายการนี้จึงใช้ฟังก์ชันการแปลงประเภท CAST เพื่อแปลงค่าตัวเลขให้เป็นประเภทสัญลักษณ์

โปรดทราบว่าการแทนที่รูปแบบแรกของคำสั่ง CASE จะสามารถใช้ได้โดยเพื่อนเสมอ:

กรณี

เมื่อ test_value = value1 แล้วให้ผลลัพธ์ 1

เมื่อ test_value = value2 แล้วให้ผลลัพธ์ 2

. . .

เมื่อแก้ไขค่า = ค่า N แล้วผลลัพธ์ N

ผลลัพธ์อื่น

ฟังก์ชัน NULLIF และ COALESCE

สำหรับปัญหาหลายประการ โดยเฉพาะอย่างยิ่งในการร้องขอการอัปเดตข้อมูล (ตัวดำเนินการ UPDATE) เป็นเรื่องง่ายที่จะแทนที่ตัวดำเนินการ CASE ที่ยุ่งยากด้วยฟังก์ชันขนาดกะทัดรัด NULLIF () (NULL) และ COALESCE () (รวม)

ฟังก์ชัน NULLIF ( ค่า1, ค่า2) หมุน NULL หากค่าของพารามิเตอร์ตัวแรกยืนยันค่าของพารามิเตอร์อื่น ในกรณีที่ไม่สอดคล้องกัน ค่าของพารามิเตอร์แรกจะถูกหมุนโดยไม่มีการเปลี่ยนแปลง เมื่อความเท่าเทียมกันของ value1 = value2 เท่ากัน ฟังก์ชันจะหมุนเป็น NULL มิฉะนั้นจะเป็นค่าของ value1

ฟังก์ชันนี้เทียบเท่ากับคำสั่ง CASE ในสองรูปแบบ:

  • ค่ากรณี1

เมื่อค่า 2 แล้วเป็นโมฆะ

ค่าอื่น1

  • กรณี

เมื่อ value1 = value2 แล้วเป็นโมฆะ

ค่าอื่น1

ฟังก์ชัน COALESCE ( ค่า1, ค่า2, ... ,ค่า N) ยอมรับรายการค่าซึ่งอาจเป็นค่าที่มีนัยสำคัญหรือไม่มีนัยสำคัญ (NULL) ฟังก์ชันนี้จะหมุนค่าทั้งหมดในรายการหรือ NULL เนื่องจากค่าทั้งหมดไม่ได้ถูกกำหนดไว้

ฟังก์ชันนี้เทียบเท่ากับคำสั่ง CASE ขั้นสูง:

กรณี

เมื่อค่า 1 ไม่เป็นโมฆะ แสดงว่าค่า 1

เมื่อค่า 2 ไม่เป็นโมฆะ แล้วค่า 2

. . .

เมื่อค่า N ไม่เป็นโมฆะ แล้วค่า N

มิฉะนั้นจะเป็นโมฆะ

เป็นที่ยอมรับได้ว่าในตารางหนังสือ (ชื่อเรื่อง, ราคา) คอลัมน์ราคามีค่าเป็น NULL เนื่องจากไม่มีหนังสือย่อย รายการถัดไปจะเปลี่ยนตารางให้เป็นสถานที่อื่นโมฆะ ข้อความ "ไม่" ปรากฏขึ้น:

เลือกชื่อ COALESCE (CAST(ราคา AS CHAR(8))

“ไม่ชัดเจน”) AS Price

จากหนังสือ;

มีการอธิบายความหลากหลายของตัวดำเนินการทางคณิตศาสตร์และวิธีการคำนวณ พิจารณาฟังก์ชันถุงย่อย (รวม) COUNT, SUM, AVG, MAX, MIN มีตัวอย่างการใช้ตัวดำเนินการ GROUP BY เพื่อจัดกลุ่มการเลือกข้อมูล มีการอธิบายความซบเซาของข้อเสนอ HAVING

ช่องการคำนวณ Pobudova

ที่ zagalny vipadku สำหรับประตู ฟิลด์นับ (เดินทาง)ในรายการ SELECT ให้ป้อนภาษา SQL ปัจจุบัน นิพจน์เหล่านี้ประกอบด้วยการดำเนินการทางคณิตศาสตร์ของการบวก การทดแทน การคูณ และส่วนย่อย รวมถึงฟังก์ชันภาษา SQL คุณสามารถระบุชื่อของคอลัมน์ (ฟิลด์) ของตารางหรือแบบสอบถามได้ หรือเลือกชื่อของคอลัมน์ในตารางหรือแบบสอบถามเดียวกันตามที่ระบุไว้ในรายการส่วนคำสั่ง FROM ของคำสั่งเฉพาะ เมื่อพับพับคุณอาจต้องมีขมับ

มาตรฐาน SQL ช่วยให้คุณสามารถระบุชื่อของคอลัมน์ของตารางผลลัพธ์ที่ใช้วลี AS ได้อย่างชัดเจน

เลือก Item.Name, Item.Price, Item.Quality, Item.Price*Item.Quality AS Variety จาก Item INNER JOIN Item ON Item.ItemCode=Item.ItemCode ก้น 6.1 รอซราคูนก ซากัลนอย วาตอสตี เดอร์ซานนอย อูโกล.

ก้น 6.2เลือกรายชื่อบริษัทจากชื่อและชื่อย่อของลูกค้าที่กำหนด

เลือกบริษัท ชื่อเล่น+""+ ซ้าย(ชื่อ,1)+"."+ซ้าย(โดยพ่อ,1)+""AS PIB จากลูกค้า ก้น 6.2 เลือกรายชื่อบริษัทจากชื่อที่กำหนดและลูกค้าเริ่มแรก

ข้อความมีฟังก์ชันด้านซ้ายในตัวซึ่งช่วยให้สามารถแสดงสัญลักษณ์แห่งความชั่วร้ายหนึ่งตัวในข้อความในเวลาที่กำหนด

ก้น 6.3เลือกรายการผลิตภัณฑ์จากวันที่และเดือนที่จำหน่ายที่กำหนด

เลือก Item.Name, Year(Item.Date) AS Year, Month(Item.Date) AS Month จาก Item INNER JOIN Item ON Item.ItemCode=Item.ItemCode ก้น 6.3 เลือกรายการผลิตภัณฑ์จากวันที่และเดือนที่จำหน่ายที่กำหนด

เครื่องมือค้นหามีฟังก์ชันปีและเดือนเพื่อแสดงเดือนและวันที่

ฟังก์ชั่น Vikoristannaya pіdsumkovyh

เพื่อขอความช่วยเหลือต่อไป ฟังก์ชั่นกระเป๋า (รวม)ภายในแบบสอบถาม SQL คุณสามารถแยกข้อมูลทางสถิติเพิ่มเติมจำนวนหนึ่งเกี่ยวกับค่าที่เลือกของชุดเอาต์พุตได้

Koristuvachevi มีพื้นฐานดังกล่าว ฟังก์ชั่นกระเป๋า:

  • จำนวน (Viraz) - ระบุจำนวนบันทึกในชุดเอาต์พุตของการสืบค้น SQL
  • Min/Max (Viraz) - กำหนดค่าน้อยที่สุดและสูงสุดของฟิลด์ที่กำหนด
  • Avg (Viraz) - ฟังก์ชั่นนี้ช่วยให้คุณขยายค่าเฉลี่ยของค่าไม่มีตัวตนที่จัดเก็บไว้ในช่องเพลงของบันทึกที่เลือก มีค่าเฉลี่ยเลขคณิตแล้ว ผลรวมของมูลค่าหารด้วยปริมาณ
  • ผลรวม (Viraz) – คำนวณจำนวนมูลค่าที่ไม่มีตัวตนที่วางลงในช่องเพลงของบันทึกที่เลือก

ส่วนใหญ่แล้วชื่อของฮีโร่จะปรากฏเป็นสัญลักษณ์ Viraz สามารถคำนวณได้ในตารางต่อไปนี้

ฟังก์ชั่นทั้งหมดนี้ทำงานด้วยค่าในคอลัมน์ตารางเดียวหรือหมุนค่าเดียวด้วยนิพจน์ทางคณิตศาสตร์ ฟังก์ชัน COUNT, MIN และ MAX ถูกจำกัดให้ใช้ทั้งช่องตัวเลขและไม่ใช่ตัวเลข ในขณะที่ฟังก์ชัน SUM และ AVG ใช้ได้กับช่องตัวเลขเท่านั้น ซึ่งอยู่ด้านหลังแฟล็ก COUNT(*) เมื่อคำนวณผลลัพธ์ของฟังก์ชันใด ๆ ค่าว่างทั้งหมดจะถูกปิด หลังจากนั้นการดำเนินการที่จำเป็นจะถูกจำกัดเฉพาะค่าเฉพาะที่สูญหายไปเท่านั้น ตัวเลือก COUNT(*) เป็นเวอร์ชันพิเศษของฟังก์ชัน COUNT แทน ซึ่งมีวัตถุประสงค์เพื่อแบ่งย่อยแถวทั้งหมดในตารางผลลัพธ์ โดยไม่คำนึงว่าค่าว่าง ซ้ำ หรือค่าอื่น ๆ จะถูกวางไว้ที่นั่นหรือไม่

หากคุณต้องการปิดค่าที่ซ้ำกันก่อนที่จะเรียกใช้ฟังก์ชันอื่น ให้วางคีย์เวิร์ด DISTINCT ไว้ข้างหน้าค่าเหล่านั้น สิ่งนี้ไม่สมเหตุสมผลสำหรับฟังก์ชัน MIN และ MAX แต่ผลลัพธ์อาจได้รับผลกระทบจากผลลัพธ์ของฟังก์ชัน SUM และ AVG ซึ่งจะต้องนำมาพิจารณาล่วงหน้าซึ่งอาจปรากฏในปัญหาผิวหนังโดยเฉพาะ นอกจากนี้ คีย์เวิร์ด DISTINCT สามารถระบุได้ไม่เกินหนึ่งครั้งในการสืบค้นใดๆ

มันสำคัญมากที่จะต้องทราบว่า ฟังก์ชั่นกระเป๋าสามารถใช้ได้เฉพาะในรายการข้อเสนอ SELECT และในคลังข้อเสนอ HAVING ในสถานการณ์อื่นๆ สิ่งนี้เป็นสิ่งที่ยอมรับไม่ได้ หากรายการคำสั่ง SELECT คือการแก้แค้น ฟังก์ชั่นกระเป๋าและในข้อความจะมีวลีรายวัน GROUP BY ซึ่งจะรับประกันการแบ่งปันข้อมูลกับกลุ่ม จากนั้นจากองค์ประกอบของรายการข้อเสนอ SELECT ไม่สามารถรวมข้อความใด ๆ ลงในฟิลด์ได้เนื่องจากสถานการณ์หากฟิลด์นั้น ทำหน้าที่เป็นข้อโต้แย้ง ฟังก์ชั่นกระเป๋า.

ก้น 6.4ดังนั้นฉันจึงระมัดระวังในการตั้งชื่อผลิตภัณฑ์ตามลำดับตัวอักษร

เลือกขั้นต่ำ (ชื่อผลิตภัณฑ์) เป็น Min_Name จากผลิตภัณฑ์ ก้น 6.4 ตั้งชื่อผลิตภัณฑ์ตามตัวอักษร

ก้น 6.5พิจารณาจำนวนความกรุณา

SELECT Count(*) AS จำนวนรายการจาก Please ก้น 6.5 พิจารณาจำนวนความกรุณา

ก้น 6.6คำนวณปริมาณรวมของสินค้าที่ขาย

เลือกผลรวม (ความพึงพอใจคุณภาพ) เป็นปริมาณ_ของผลิตภัณฑ์จากความพึงพอใจ ก้น 6.6 มูลค่าของปริมาณรวมของสินค้าที่ขาย

ก้น 6.7คำนวณราคาเฉลี่ยของสินค้าที่ขาย

เลือก Avg(Product.Price) AS Avg_price จากสินค้า INNER JOIN Goods ON Product.ProductCode=Product.ProductCode; ก้น 6.7 ราคาเฉลี่ยของสินค้าที่ขาย

เลือกผลรวม(สินค้า.ราคา*ราคา.คุณภาพ) เป็นความหลากหลายจากผลิตภัณฑ์ภายในเข้าร่วมความพึงพอใจบนผลิตภัณฑ์รหัสผลิตภัณฑ์=วัตถุประสงค์รหัสผลิตภัณฑ์ ก้น 6.8. ปิดราคุณนก วารอสติ ขายสินค้า

ข้อเสนอ จัดกลุ่มตาม

บ่อยครั้งในการสืบค้นมีความจำเป็นต้องสร้างถุงเก็บชั่วคราว เพื่อให้วลี "ผิวหนัง..." ปรากฏในแบบสอบถาม ด้วยเหตุนี้ GROUP BY clause จึงถูกใช้ในคำสั่ง SELECT การสืบค้นที่มี GROUP BY เรียกว่าการสืบค้นที่จัดกลุ่มซึ่งเป็นส่วนย่อยของข้อมูลที่ถูกจัดกลุ่มไว้ ซึ่งเป็นผลมาจากการดำเนินการ SELECT ที่ตามมา หลังจากนั้นจะสร้างแถวสรุปเดี่ยวสำหรับแต่ละกลุ่มโดยรอบ มาตรฐาน SQL กำหนดให้ส่วนคำสั่ง SELECT และส่วนคำสั่ง GROUP BY มีความเกี่ยวข้องกันอย่างใกล้ชิด เนื่องจากมีอยู่ในคำสั่ง SELECT ของวลี GROUP BY องค์ประกอบรายการในคำสั่ง SELECT จึงรับผิดชอบค่าเดียวสำหรับทั้งกลุ่ม นอกจากนี้ คำสั่ง SELECT ยังสามารถรวมองค์ประกอบประเภทต่อไปนี้: ชื่อฟิลด์ ฟังก์ชั่นกระเป๋าค่าคงที่และนิพจน์ที่มีการรวมกันขององค์ประกอบการประกันภัยเกิน

ชื่อฟิลด์ทั้งหมดที่อยู่ในรายการข้อเสนอ SELECT จะต้องปรากฏใน GROUP BY clause - อาจถูกไล่ออก หากชื่อนั้นได้รับชัยชนะใน ฟังก์ชั่นกระเป๋า- กฎย้อนกลับไม่ยุติธรรม - GROUP BY clause อาจมีชื่อ clause เดียวกันกับที่อยู่ในรายการ SELECT clause

เนื่องจากคำสั่งย่อย WHERE ถูกรวมเข้ากับ GROUP BY จึงมาก่อน และตามด้วยการจัดกลุ่มด้วยแถวที่ตรงกับใจ

มาตรฐาน SQL ระบุว่าเมื่อทำการจัดกลุ่ม ค่ารายวันทั้งหมดจะถือว่าเท่ากัน หากสองแถวของตารางในคอลัมน์กลุ่มเดียวกันมีค่า NULL และค่าที่เหมือนกันในคอลัมน์กลุ่มอื่นที่ไม่ถูกต้องทั้งหมด คอลัมน์เหล่านั้นจะถูกวางไว้ในกลุ่มเดียวกัน

ก้น 6.9.คำนวณจำนวนการซื้อโดยเฉลี่ยของผู้ซื้อแต่ละราย

เลือก Client.Name, Avg (Pleasure.Quality) AS Average_quantity จากลูกค้าเข้าร่วมภายใน โปรด ON Client.ClientCode=Pleasure.CustomerCode GROUP BY Client.Name ก้น 6.9. การคำนวณจำนวนการซื้อเฉลี่ยของผู้ซื้อแต่ละราย

วลี "ผู้ซื้อสกิน" พบนิพจน์ในการสืบค้น SQL ในรูปแบบของข้อเสนอ จัดกลุ่มตามลูกค้าชื่อ.

ก้น 6.10.ที่สำคัญคือมีการขายผลิตภัณฑ์บำรุงผิวให้กับ Yaku Sumu

เลือก Product.Name, Sum(Product.Price*Purpose.Quality) AS Variety จาก Product INNER JOIN Product ON Product.ProductCode=Purpose.ProductCode GROUP BY Product.Name ก้น 6.10. เพื่อเป็นการแลกเปลี่ยน ผลิตภัณฑ์สกินถูกขายไปจนหมด

เลือก Client.Company, Count (Purpose.Code) AS จำนวนไคลเอ็นต์จากไคลเอ็นต์ INNER JOIN Client ON Client.ClientCode=Place.CustomerCode GROUP BY Client.Company ก้น 6.11. รักษาสิ่งต่างๆ มากมายที่บริษัทสกินทำขึ้นมา

SELECT Client.Company, Sum(Purpose.Quality) AS Sales_Quality, Sum(Product.Price*Price.Quantity) AS Variety FROM Product INNER JOIN (ลูกค้า INNER JOIN ก็ดีบน Client.ClientCode=U year.Client code) .Product code GROUP โดยลูกค้า บริษัท ก้น 6.12. Pіdrakhunok zаgalїkіkostіซื้อโดย บริษัท สกินเพื่อผลิตภัณฑ์และความดีของมัน

ก้น 6.13.คำนวณจำนวนผลิตภัณฑ์บำรุงผิวทั้งหมดต่อเดือน

เลือก Product.Name, Month(Purpose.Date) AS Month, Sum(Product.Price*Price.Quality) AS Variety FROM Product INNER JOIN Satisfaction ON Product.ProductCode=Purpose.ProductCode GROUP BY Product.Name, Month(Price.Date) ) ) ก้น 6.13. มูลค่ารวมยอดขายผลิตภัณฑ์บำรุงผิวต่อเดือน

ก้น 6.14คำนวณมูลค่ารวมของผลิตภัณฑ์หนังชิ้นแรกต่อเดือนหนัง

เลือก Product.Name, Month(Price.Date) AS Month, Sum(Product.Price*Price.Quality) AS Variety FROM Product INNER JOIN Product ON Product.ProductCode=Price.ProductCode WHERE Product.Grade="First" GROUP BY Product . .ชื่อ, เดือน(กรุณา.วันที่) ก้น 6.14 มูลค่ารวมมูลค่าของผลิตภัณฑ์หนังชิ้นแรกต่อเดือนหนัง

ข้อเสนอมี

เบื้องหลังความช่วยเหลือของ HAVING บล็อกข้อมูลทั้งหมดที่จัดกลุ่มอยู่เบื้องหลังความช่วยเหลือจาก GROUP BY จะปรากฏขึ้น ซึ่งตอบสนองความคิดของ HAVING ที่ได้รับ สามารถกรองชุดเอาต์พุตได้

จิตใจมีความแตกต่างจากจิตใจ โดยที่:

  • HAVING รวมกลุ่มที่มีผลลัพธ์ของค่ารวมจากชุดข้อมูลผลลัพธ์
  • โดยที่รวมจากการแยกย่อยของค่ารวมบันทึกที่จัดกลุ่มซึ่งไม่เป็นที่พอใจของจิตใจ
  • เนื่องจากภูมิปัญญาของ WHERE จึงไม่สามารถตั้งค่าฟังก์ชันรวมได้

หุ้น 6.15.อย่างมีนัยสำคัญคือจำนวนบริษัทที่มียอดขายเกินสามแห่ง

เลือก Client.Company นับ (วัตถุประสงค์.คุณภาพ) เป็นปริมาณจากลูกค้าเข้าร่วมภายในไคลเอนต์บน Client.ClientCode=Pleasure.ClientCode GROUP BY Client.Company HAVING Count (Pleasure.Quality ใช่)>3 หุ้น 6.15. จำนวนบริษัทที่มีนัยสำคัญซึ่งมีจำนวนความสนใจเกินสาม

ก้น 6.16.ป้อนรายการผลิตภัณฑ์ที่ขายได้มากกว่า 10,000 รูเบิล

เลือก Product.Name, Sum(Product.Price*Price.Quality) AS Variety จาก Product INNER JOIN Product ON Product.ProductCode=Price.ProductCode GROUP BY Product.Name HAVING Sum(Product.Price*Price.Quality)>1000 ก้น 6.16. ด้านล่างนี้คือรายการผลิตภัณฑ์ที่ขายในราคามากกว่า 10,000 krb

ก้น 6.17.ป้อนรายการผลิตภัณฑ์ที่ขายเกิน 10,000 รายการโดยไม่ต้องระบุยอดรวม

เลือก Product.Name จาก Product INNER JOIN กรุณา ON Product.ProductCode=Purpose.ProductCode GROUP BY Product.Name HAVING Sum(Product.Price*Price.Quantity)>10000 ก้น 6.17. มีรายการสินค้าที่ขายเกิน 10,000 รายการ โดยไม่ได้กำหนดจำนวนเงินไว้

แบ่งปันกับเพื่อน ๆ หรือบันทึกเพื่อตัวคุณเอง:

ได้เปรียบ...