Nhóm tổng mảng Php theo

Kết quả sẽ có cùng loại với đầu vào trừ khi nó không thể được biểu diễn chính xác trong loại đó. Trong những trường hợp này

  • Số nguyên 32 bit sẽ được chuyển đổi thành số nguyên 64 bit nếu kết quả có thể biểu thị dưới dạng số nguyên 64 bit

  • Số nguyên 32 bit sẽ được chuyển đổi thành gấp đôi nếu kết quả không thể biểu thị dưới dạng số nguyên 64 bit

  • Số nguyên 64 bit sẽ được chuyển đổi thành gấp đôi nếu kết quả không thể biểu thị dưới dạng số nguyên 64 bit

Các trường không phải là số hoặc không tồn tại

Nếu được sử dụng trên một trường chứa cả giá trị số và không phải số, hãy bỏ qua các giá trị không phải số và trả về tổng của các giá trị số

Nếu được sử dụng trên một trường không tồn tại trong bất kỳ tài liệu nào trong bộ sưu tập, trả về

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])
0 cho trường đó

Nếu tất cả các toán hạng không phải là số, trả về

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])
0

Toán hạng mảng

Trong giai đoạn, nếu biểu thức phân giải thành một mảng, coi toán hạng là một giá trị không phải là số

Trong các giai đoạn được hỗ trợ khác

  • Với một biểu thức duy nhất làm toán hạng của nó, nếu biểu thức phân giải thành một mảng, hãy chuyển sang mảng để thao tác trên các phần tử số của mảng để trả về một giá trị duy nhất

  • Với một danh sách các biểu thức là toán hạng của nó, nếu bất kỳ biểu thức nào phân giải thành một mảng, thì không đi qua mảng mà thay vào đó coi mảng là một giá trị không phải là số

ví dụ

Sử dụng trong Giai đoạn { $sum: [ , .. ] }0

Xem xét một bộ sưu tập

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])
8 với các tài liệu sau

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:00:00Z") }{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-02-03T09:00:00Z") }{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate("2014-02-03T09:05:00Z") }{ "_id" : 4, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") }{ "_id" : 5, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-02-15T09:05:00Z") }

Nhóm các tài liệu theo ngày và năm của trường

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])
9, thao tác sau đây sử dụng bộ tích lũy để tính tổng số lượng và số lượng cho từng nhóm tài liệu

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])

Hoạt động trả về kết quả sau

{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }

Sử dụng trên một trường không tồn tại trả về giá trị là

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },           count: { $sum: 1 }         }     }   ])
0. Thao tác sau cố gắng thực hiện trên
{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }
4

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])

hoạt động trở lại

{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }

Bộ tích lũy tổng hợp có thể được sử dụng thay cho

{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }
6 trong giai đoạn

Mẹo

Xem thêm

Sử dụng trong Giai đoạn { $sum: [ , .. ] }3

Một bộ sưu tập

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
0 chứa các tài liệu sau

{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }

Ví dụ sau sử dụng giai đoạn trong để tính tổng điểm bài kiểm tra, tổng điểm phòng thí nghiệm và tổng điểm cuối kỳ và giữa kỳ

db.students.aggregate([   {     $project: {       quizTotal: { $sum: "$quizzes"},       labTotal: { $sum: "$labs" },       examTotal: { $sum: [ "$final", "$midterm" ] }     }   }])

Kết quả hoạt động trong các tài liệu sau

{ $sum:  }
0

Sử dụng trong Giai đoạn { $sum: [ , .. ] }7

Mới trong phiên bản 5. 0

Tạo bộ sưu tập

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
4 bao gồm doanh số bán bánh ở các bang California (
db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
5) và Washington (_______10_______6)

{ $sum:  }
1

Ví dụ này sử dụng trong giai đoạn để xuất ra tổng của

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
9 bánh đã bán trong mỗi
{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
0

{ $sum:  }
2

trong ví dụ

  • { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    1 tài liệu trong bộ sưu tập của
    { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    0. Có phân vùng cho
    db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
    5 và
    db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
    6

  • { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    5 các tài liệu trong mỗi phần của
    { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    6 theo thứ tự tăng dần (
    { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    7), vì vậy
    { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    6 sớm nhất là đầu tiên

  • { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
    9 đặt trường
    { "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
    0 thành tổng của các giá trị
    db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
    9 sử dụng giá trị được chạy trong cửa sổ

    Tài liệu chứa tài liệu nằm giữa giới hạn dưới của

    { "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
    3 và tài liệu
    { "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
    4 ở đầu ra. Điều này có nghĩa là trả về tổng của các giá trị
    db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
    9 cho các tài liệu giữa phần đầu của phân vùng và tài liệu hiện tại

Trong kết quả này, tổng của các giá trị

db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
9 cho
db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
5 và
db.sales.aggregate(   [     {       $group:         {           _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },           totalAmount: { $sum: "$qty" },           count: { $sum: 1 }         }     }   ])
6 được hiển thị trong trường
{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
0

Làm cách nào để tính tổng các giá trị mảng trong PHP?

PHP. hàm array_sum() . Nó nhận vào một tham số mảng và trả về tổng của tất cả các giá trị trong đó. Đối số duy nhất của hàm là mảng cần tính tổng. The array_sum() function returns the sum of all the values in an array(one dimensional and associative). It takes an array parameter and returns the sum of all the values in it. The only argument to the function is the array whose sum needs to be calculated.

Làm cách nào để tính tổng hai mảng trong PHP?

Chúng ta có thể thêm mảng ( một hoặc nhiều mảng ) vào một mảng hiện có bằng cách sử dụng hàm array_merge trong PHP. Bằng cách này, hai mảng có thể được nối và một mảng kết quả có thể được tạo. $result = array_merge($array1, $array2,. );

Làm cách nào để tính tổng các giá trị của một mảng có cùng khóa trong PHP?

Bạn có thể sử dụng hàm array_column() hoặc array_map() cùng với hàm array_sum PHP để cộng các giá trị của một đối tượng cụ thể . Bạn có thể tạo một hàm do người dùng định nghĩa để thêm nhóm theo chức năng vào một mảng nhiều chiều.

Làm cách nào để nhóm mảng theo khóa trong PHP?

Sử dụng hàm PHP array_reduce() để NHÓM THEO và SUM các giá trị của một mảng trong PHP . Trong ví dụ này, chúng tôi sẽ chỉ cho bạn cách nhóm mảng theo khóa và giá trị tổng bằng cách sử dụng PHP. Nó giúp tính tổng các giá trị của một mảng có cùng khóa trong PHP.