MySQL之------多表查询

文章展示了多个SQL查询例子,包括查找购买特定商品(如火腿肠和零食)的用户,计算单个用户购物车总价,查询每日营业额,计算总利润和商品利润率,以及获取用户余额和商品库存情况。还提到了SQL中的日期处理函数如DAYNAME和DATE_ADD/DATE_SUB。
摘要由CSDN通过智能技术生成

 下面是我们要进行操作的表

 1.查询购买了火腿肠的用户

 select account.name from goods,cart,account where goods_name='火腿肠' and goods.good_no=cart.good_no and account.id=cart.account_id;

2.查询所用购买了零食的用户

select account.name from category,account,goods,cart where category.no=1 and category.no=goods.category_no and goods.good_no=cart.good_no and cart.account_id= account.id;

 

 3.查询张三的购物车商品总价格

select account.name,sum(cart.num*goods.price) from account,goods,cart where account.name='张三' and cart.account_id=account.id and cart.good_no = goods.good_no;

4.查询每个用户的购物车总价

select account.name,sum(cart.num*goods.price) as '购物车总价' from account,goods,cart where cart.account_id=account.id and cart.good_no = goods.good_no group by account.name;

 

5. 查询一星期内哪一天的营业额最高并降序排列

 SELECT DAYNAME(cart.create_time), SUM(goods.price*cart.num) AS '营业额'
    -> FROM cart, account, goods
    -> WHERE cart.account_id = account.id AND cart.good_no = goods.good_no
    -> GROUP BY DAYNAME(cart.create_time)
    -> ORDER BY SUM(goods.price*cart.num) DESC;

这里我们用到了一个显示星期几的函数 DAYNAME.

在SQL中,可以使用DAYNAME函数来获取一周中某一天的名称。该函数的语法如下: DAYNAME(date) 其中,date是一个日期值。函数会返回一个字符串,表示指定日期是星期几。 例如,假设我们有一个日期值date1,可以使用以下语句来获取它的星期天名称:

SELECT DAYNAME(date1);
该语句将返回字符串"Sunday",表示date1是星期天。

注意,DAYNAME函数只考虑日期,而不考虑时间。如果要考虑时间,可以使用DAYOFMONTH函数来获取月份中的某一天,或者使用DAYOFWEEK函数来获取某一周的星期几。

6.查询一下总利润

 select sum(goods.price*num-goods.cost*num) as '利润' from cart,goods where cart.good_no=goods.good_no;

 7.查询每个商品的利润率

SELECT goods_name,ROUND(((price-cost)/cost),2) AS '利润率' FROM goods ORDER BY 利润率 desc;

SQL中的ROUND函数用于对数值进行四舍五入或者去除小数位。

语法如下: ROUND(number, digits)

其中,number是要进行四舍五入或去除小数位的数值;

digits是要保留的小数位数。

例如,假设我们有一个数值num1,可以使用以下语句将其四舍五入到小数点后两位:

SELECT ROUND(num1, 2);

`该语句将返回数值num1四舍五入后的结果,保留小数点后两位。 如果要去除小数位,可以使用以下语句:

SELECT ROUND(num1, 0);

该语句将返回数值num1去除小数位后的结果。 注意,如果要对负数进行四舍五入,需要在语句中指定符号位。

例如,以下语句将对负数进行四舍五入到小数点后两位:

SELECT ROUND(-num1, 2);

该语句将返回负数num1四舍五入后的结果,保留小数点后两位。 

8.查询每个账户的余额

select account.name as '用户',account.money-sum(cart.num*goods.price) as '余额' from cart,account,goods where cart.account_id=account.id and cart.good_no=goods.good_no group by 用户,account.money;

9.查询每个商品的库存剩余多少

select goods.goods_name,goods.count as '原库存',count-sum(cart.num) from cart,goods where cart.good_no=goods.good_no group by goods.goods_name,原库存;

 

 补充

对时间的操作

下面是增加

-- 给create_time增加1年
date_add(create_time, interval 1 year);

-- 给create_time增加1月
date_add(create_time, interval 1 month);

-- 给create_time增加1天
date_add(create_time, interval 1 day);

-- 给create_time增加1小时
date_add(create_time, interval 1 hour);

-- 给create_time增加1分钟
date_add(create_time, interval 1 minute);

-- 给create_time增加1周
date_add(create_time, interval 1 week);

减少的,是将date_add替换为date_sub.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值