| SELECT COUNT(*) AS count | | FROM orders |
| | db.orders.aggregate( [ | | { | | $group: { | | _id: null, | | count: { $sum: 1 } | | } | | } | | ] ) |
| Cuente todos los registros de orders |
| SELECT SUM(price) AS total | | FROM orders |
| | db.orders.aggregate( [ | | { | | $group: { | | _id: null, | | total: { $sum: "$price" } | | } | | } | | ] ) |
| Sumar el campo price de orders |
| SELECT cust_id, | | SUM(price) AS total | | FROM orders | | GROUP BY cust_id |
| | db.orders.aggregate( [ | | { | | $group: { | | _id: "$cust_id", | | total: { $sum: "$price" } | | } | | } | | ] ) |
| Para cada cust_id único, sume el campo 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 } } | | ] ) |
| Para cada cust_id único, suma el campo price y los resultados se ordenan por suma. |
| 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" } | | } | | } | | ] ) |
| Para cada agrupación única cust_id, ord_date, sume el campo price. Excluye la parte horaria de la fecha. |
| 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 } } } | | ] ) |
| Para cust_id con múltiples registros, devuelve cust_id y el recuento de registros correspondiente. |
| 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 } } } | | ] ) |
| Para cada agrupación única cust_id, ord_date, se suma el campo price y se devuelve solo cuando la suma es mayor que 250. Se excluye la parte horaria de la fecha. |
| 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" } | | } | | } | | ] ) |
| Para cada cust_id único con estado A, sume el campo 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 } } } | | ] ) |
| Para cada cust_id único con estado A, sume el campo price y devuelva solo donde la suma sea mayor que 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" } | | } | | } | | ] ) |
| Para cada cust_id único, sume los campos de la línea de artículo qty correspondientes asociados con los pedidos. |
| 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 } | | } | | } | | ] ) |
| Cuenta el número de agrupaciones cust_id y ord_date distintas. Excluye la parte horaria de la fecha. |