所以我有2張桌子讓我們說
- 訂單(order_id 等...)和
- order_items(order_id,...)
我想通過將訂單中的 id 與訂單專案中的 x 個 id 數量進行分組來大致了解有多少訂單具有 x 個數量的專案
所以假設我有這種情況:
訂單:
| order_id | ??? | ??? |
|---|---|---|
| 11 | 1個 | 待辦的 |
| 33 | 3個 | 待辦的 |
| 44 | 3個 | 待辦的 |
| 22 | 2個 | 待辦的 |
| 444 | 4個 | 待辦的 |
訂單專案:
| order_id | ??? | ??? | ??? | ??? |
|---|---|---|---|---|
| 11 | 7 | 32 | 132 | 469,99 |
| 22 | 5個 | 192 | 124 | 519,99 |
| 22 | 7 | 27 | 92 | 800,74 |
| 33 | 11 | 6個 | 128 | 849,99 |
| 33 | 10 | 95 | 106 | 109,99 |
| 33 | 5個 | 271 | 148 | 549,59 |
| 44 | 9 | 284 | 138 | 54,99 |
| 44 | 8個 | 174 | 117 | 798,26 |
| 44 | 6個 | 131 | 34 | 279,99 |
| 44 | 11 | 271 | 58 | 549,59 |
| 444 | 9 | 284 | 138 | 54,99 |
| 444 | 8個 | 174 | 117 | 798,26 |
| 444 | 6個 | 131 | 34 | 279,99 |
| 444 | 11 | 271 | 58 | 549,59 |
使用此查詢:
SELECT count(o.order_id) as ORDER_count,
(SELECT count(*)
FROM order_items ol
WHERE o.order_id = ol.order_id) AS ORDER_ITEMS_count
FROM orders o, order_items ol
WHERE o.order_id = ol.order_id
GROUP BY o.order_id,ol.order_id;
我越來越:
| ORDER_COUNT 個 | ORDER_ITEMS_COUNT 個 |
|---|---|
| 4個 | 4個 |
| 1個 | 1個 |
| 2個 | 2個 |
| 3個 | 3個 |
| 4個 | 4個 |
我期待這樣的事情:
| ORDER_COUNT 個 | ORDER_ITEMS_COUNT 個 |
|---|---|
| 5個 | 5個 |
| 1個 | 1個 |
| 2個 | 2個 |
| 3個 | 3個 |
你能指出我錯過了什么嗎?
謝謝你的幫助
uj5u.com熱心網友回復:
我想通過將訂單中的 id 與訂單專案中的 x 個 id 數量進行分組來大致了解有多少訂單具有 x 個數量的專案
首先選擇所有訂單并計算它們的專案。然后使用這個結果來統計有多少訂單共享了一些商品。
SELECT number_of_items, COUNT(*) AS how_many_orders
FROM
(
SELECT o.order_id, COUNT(oi.order_id) as number_of_items
FROM orders o
LEFT OUTER JOIN order_items ON oi.order_id = o.order_id
GROUP BY o.order_id
) orders_with_item_counts
GROUP BY number_of_items
ORDER BY number_of_items;
如果每個訂單至少有一個專案(這似乎很可能),您可以將 更改LEFT OUTER JOIN為INNER JOIN.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536651.html
標籤:数据库甲骨文
上一篇:希望子查詢回傳非空值
