Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะแสดงระเบียนที่มีผลรวมระหว่างช่วงเฉพาะโดยใช้ GROUP BY, HAVING และ ORDER BY ในการสืบค้น MySQL เดียวได้อย่างไร


ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable ( Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(20), ProductPrice int); เคียวรีตกลง, 0 แถวได้รับผลกระทบ (0.70 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(CustomerName,ProductPrice) ('Chris',600) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า DemoTable (ชื่อลูกค้า ProductPrice) ('David',450);Query OK, 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงใน DemoTable(CustomerName,ProductPrice) values('Chris',980);Query OK, 1 แถวได้รับผลกระทบ (0.40 วินาที)mysql> แทรกลงใน DemoTable(CustomerName,ProductPrice) values('Mike',1200);Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงใน DemoTable(CustomerName,ProductPrice) values('Chris',400);Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงในค่า DemoTable(CustomerName,ProductPrice) ('David',1200);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.20 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+--------------+------------+| รหัส | ชื่อลูกค้า | ราคาสินค้า |+----+--------------+-------------+| 1 | คริส | 600 || 2 | เดวิด | 450 || 3 | คริส | 980 || 4 | ไมค์ | 1200 || 5 | คริส | 400 || 6 | เดวิด | 1200 |+----+---------------------+--------------+6 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงช่วงของตัวเลขเฉพาะ -

mysql> เลือก CustomerName,sum(ProductPrice) AS Total_Price จากกลุ่ม DemoTable โดย CustomerName มีผลรวม (ProductPrice) ระหว่าง 1600 ถึง 2000 ลำดับโดย CustomerName DESC;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-------------+-------------+| ชื่อลูกค้า | Total_Price |+--------------------+-------------+| เดวิด | 1650 || คริส | 1980 |+-------------+-----------+2 แถวในชุด (0.00 วินาที)