SQL94 返回每个顾客不同订单的总金额

返回每个顾客不同订单的总金额_牛客题霸_牛客网 (nowcoder.com)icon-default.png?t=M85Bhttps://www.nowcoder.com/practice/ce313253a81c4947b20e801cd4da7894?tpId=298&tqId=2374691&ru=/exam/oj&qru=/ta/sql-teach-yourself/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3DSQL%25E7%25AF%2587%26topicId%3D298

首先根据OrderItems表可以计算每个order_num订购的总金额,题目让求每个顾客的订单总数 

每个顾客可能有好几个 order_num,我们要求这些的和,怎么办?

join就好

select 
    cust_id,
    sum(total) as total_ordered
from Orders 
join (select 
        order_num,
        sum(item_price*quantity) as total
from OrderItems
group by order_num) oi using(order_num)
group by cust_id
having total_ordered
order by total_ordered desc

还有一种写法 select使用自连接

select
  cust_id,
  (
    select
      SUM(item_price * quantity)
    FROM
      OrderItems a
    WHERE
      a.order_num = b.order_num
  ) total_ordered
from
  Orders b
ORDER BY total_ordered DESC

猜测,应该是,对b表中的每一个顾客,去看她的order_num,相等就计算,猜的,不知道对不对

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 在零售数据顾客表中转换顾客姓名为全大写。 假设我们有一个名为 `customers` 的表,其中包含 `name` 列,存储了顾客姓名。要将所有顾客姓名转换为全大写,可以使用如下 SQL 语句: ```sql UPDATE customers SET name = UPPER(name); ``` 执行该语句后,`customers` 表中的所有顾客姓名都将被转换为全大写。 2. 对订单总金额进行四舍五入,要求精度为小数点后两位。 假设我们有一个名为 `orders` 的表,其中包含 `amount` 列,存储了订单总金额。要将所有订单总金额进行四舍五入,并保留小数点后两位精度,可以使用如下 SQL 语句: ```sql UPDATE orders SET amount = ROUND(amount, 2); ``` 执行该语句后,`orders` 表中的所有订单总金额都将被四舍五入,并保留小数点后两位精度。 3. 统计月度订单数量。 假设我们有一个名为 `orders` 的表,其中包含 `order_date` 列,存储了订单日期。要统计每个月的订单数量,可以使用如下 SQL 语句: ```sql SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, COUNT(*) AS order_count FROM orders GROUP BY month; ``` 执行该语句后,将会返回每个月的订单数量。 4. 根据商品价格将商品分级,0-100、0-200、200以上,并统计个档商品个数。 假设我们有一个名为 `products` 的表,其中包含 `price` 列,存储了商品价格。要将商品根据价格分为三个等级,并统计每个等级的商品个数,可以使用如下 SQL 语句: ```sql SELECT CASE WHEN price <= 100 THEN '0-100' WHEN price <= 200 THEN '100-200' ELSE '200+' END AS price_range, COUNT(*) AS product_count FROM products GROUP BY price_range; ``` 执行该语句后,将会返回每个等级的商品个数。 5. 在雇员信息表emp中,使用集合函数查询其中所有员工所在部门的名称及总数。 假设我们有一个名为 `emp` 的表,其中包含 `deptno` 列,存储了员工所在部门的编号。要查询每个部门的员工数量,可以使用如下 SQL 语句: ```sql SELECT dname, COUNT(*) AS emp_count FROM emp JOIN dept ON emp.deptno = dept.deptno GROUP BY dname; ``` 执行该语句后,将会返回每个部门的员工总数。 6. 把创建的自定义jar包加入hive,并执行mylower自定义函数。 首先,需要将自定义的 Jar 包上传到 Hadoop 集群中,并在 Hive 中添加 Jar 包: ```sql ADD JAR /path/to/myjar.jar; ``` 然后,可以使用如下 SQL 语句创建自定义函数 `mylower`: ```sql CREATE TEMPORARY FUNCTION mylower AS 'com.example.MyLower'; ``` 执行该语句后,可以在 Hive 中使用 `mylower` 函数。 7. 把顾客id和fname列传给shell中"bin/cat"并让它直接输出。 可以使用如下命令将 `customers` 表中的 `id` 和 `fname` 列输出到 shell 中: ```sh hive -e "SELECT id, fname FROM customers" | cat ``` 该命令将会输出 `customers` 表的 `id` 和 `fname` 列。 8. 用cat取出顾客表第一列 可以使用如下命令将 `customers` 表中的第一列输出到 shell 中: ```sh hive -e "SELECT * FROM customers" | cut -f1 ``` 该命令将会输出 `customers` 表中的第一列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值