【发布时间】:2019-02-06 02:08:56
【问题描述】:
使用此示例数据库:https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_avg
我正在尝试创建一个表格,返回每个国家/地区的每个类别的订单百分比。所以理想情况下它看起来像这样:
Country CategoryName Num_of_orders % of orders
Argentina Confections 1 0.50
Argentina Produce 1 0.50
Austria Beverages 5 0.17
Austria Condiments 6 0.21
因此,由于阿根廷只有两个订单,因此糖果将占 50%,因此也会生产。
到目前为止,我得到的最接近的是返回总订单数的百分比,但忽略了国家/地区。
SELECT c.country, ca.categoryname, count(o.orderid) as Num_of_orders,
count(*)/(select 1.0*count(*) from orders) as percentage
from orders as o
join customers as c on c.customerid = o.customerid
join orderdetails as od on od.orderid = o.orderid
join products as p on p.productid = od.productid
join categories as ca on ca.categoryid = p.categoryid
group by 1, 2
任何帮助将不胜感激。
【问题讨论】:
-
我认为它工作正常..你觉得有什么问题
-
我正在尝试按类别获取每个国家/地区的订单百分比。所以在理想情况下,它会返回:阿根廷 |甜点 | 1 | 0.50 (50%) 相对于:阿根廷 |甜点 | 1 | 0.0051 ( >0%)
-
您使用的是哪个 dbms? (那个
GROUP BY 1, 2不是ANSI SQL...)
标签: sql