I got a table with the following content: Order_item
Order-id | item-id |
---|---|
1 | 45 |
4 | 45 |
4 | 57 |
5 | 68 |
5 | 32 |
6 | 68 |
I would like to know how many items are contained in average per order.
I tried that sql query:
select count(item-id), order-id
from order_item
group by order-id
that got me the following result:
Order-id | count |
---|---|
1 | 1 |
4 | 2 |
5 | 2 |
6 | 1 |
And now I would divide the 6 items of the count through 4 orders which gets me to my result of average 1,5 items per order. How would I write a SQL query to get the result 1,5?
CodePudding user response:
Divide count of all rows by distinct IDs and multiply by 1.0 to implicitly cast for numeric division.
select Count(*) / (Count(distinct Order_Id) * 1.0)
from Order_item;
CodePudding user response:
You can use the result of your query to get the average:
WITH orders AS (
select count(item-id) as items, order-id
from order_item
group by order-id
)
SELECT AVG(items) FROM orders