SELECT COUNT(*) AS count | FROM orders |
| db.orders.aggregate( [ | { | $group: { | _id: null, | count: { $sum: 1 } | } | } | ] ) |
| |
SELECT SUM(price) AS total | FROM orders |
| db.orders.aggregate( [ | { | $group: { | _id: null, | total: { $sum: "$price" } | } | } | ] ) |
| |
SELECT cust_id, | SUM(price) AS total | FROM orders | GROUP BY cust_id |
| db.orders.aggregate( [ | { | $group: { | _id: "$cust_id", | total: { $sum: "$price" } | } | } | ] ) |
| 对于每个唯一的 cust_id ,对 price 字段求和。 |
SELECT cust_id, | SUM(price) AS total | FROM orders | GROUP BY cust_id | ORDER BY total |
| db.orders.aggregate( [ | { | $group: { | _id: "$cust_id", | total: { $sum: "$price" } | } | }, | { $sort: { total: 1 } } | ] ) |
| 对于每个唯一 cust_id ,对 price 字段求和,且结果按总和排序。 |
SELECT cust_id, | ord_date, | SUM(price) AS total | FROM orders | GROUP BY cust_id, | ord_date |
| db.orders.aggregate( [ | { | $group: { | _id: { | cust_id: "$cust_id", | ord_date: { $dateToString: { | format: "%Y-%m-%d", | date: "$ord_date" | }} | }, | total: { $sum: "$price" } | } | } | ] ) |
| 对于每个唯一的 cust_id 和 ord_date 分组,对 price 字段求和。不包括日期的时间部分。 |
SELECT cust_id, | count(*) | FROM orders | GROUP BY cust_id | HAVING count(*) > 1 |
| db.orders.aggregate( [ | { | $group: { | _id: "$cust_id", | count: { $sum: 1 } | } | }, | { $match: { count: { $gt: 1 } } } | ] ) |
| 对于具有多条记录的 cust_id ,返回 cust_id 和相应的记录数。 |
SELECT cust_id, | ord_date, | SUM(price) AS total | FROM orders | GROUP BY cust_id, | ord_date | HAVING total > 250 |
| db.orders.aggregate( [ | { | $group: { | _id: { | cust_id: "$cust_id", | ord_date: { $dateToString: { | format: "%Y-%m-%d", | date: "$ord_date" | }} | }, | total: { $sum: "$price" } | } | }, | { $match: { total: { $gt: 250 } } } | ] ) |
| 对于每个唯一的 cust_id 和 ord_date 分组,对 price 字段求和并仅在总和大于 250 的情况下返回结果。不包括日期的时间部分。 |
SELECT cust_id, | SUM(price) as total | FROM orders | WHERE status = 'A' | GROUP BY cust_id |
| db.orders.aggregate( [ | { $match: { status: 'A' } }, | { | $group: { | _id: "$cust_id", | total: { $sum: "$price" } | } | } | ] ) |
| 对于状态为 A 的每个唯一的 cust_id ,对 price 字段求和。 |
SELECT cust_id, | SUM(price) as total | FROM orders | WHERE status = 'A' | GROUP BY cust_id | HAVING total > 250 |
| db.orders.aggregate( [ | { $match: { status: 'A' } }, | { | $group: { | _id: "$cust_id", | total: { $sum: "$price" } | } | }, | { $match: { total: { $gt: 250 } } } | ] ) |
| 对状态为 A 的每个唯一 cust_id ,求 price 字段的总和,仅当总和大于 250 时才会返回。 |
SELECT cust_id, | SUM(li.qty) as qty | FROM orders o, | order_lineitem li | WHERE li.order_id = o.id | GROUP BY cust_id |
| db.orders.aggregate( [ | { $unwind: "$items" }, | { | $group: { | _id: "$cust_id", | qty: { $sum: "$items.qty" } | } | } | ] ) |
| 对于每个唯一的 cust_id ,将与订单关联的相应订单项 qty 字段相加求和。 |
SELECT COUNT(*) | FROM (SELECT cust_id, | ord_date | FROM orders | GROUP BY cust_id, | ord_date) | as DerivedTable |
| db.orders.aggregate( [ | { | $group: { | _id: { | cust_id: "$cust_id", | ord_date: { $dateToString: { | format: "%Y-%m-%d", | date: "$ord_date" | }} | } | } | }, | { | $group: { | _id: null, | count: { $sum: 1 } | } | } | ] ) |
| 计算不同 cust_id 、ord_date 分组的数量。不包括日期的时间部分。 |