首页 > 数据库 >mysql postgresql with 案例

mysql postgresql with 案例

时间:2024-11-28 10:54:37浏览次数:5  
标签:ps product postgresql sales 案例 mysql total id quantity

场景假设

假设我们有两张表:

  1. sales 表:记录了每个产品的销售数量
    • product_id (产品ID)
    • quantity (销售数量)
  2. products 表:记录了每个产品的详细信息
    • product_id (产品ID)
    • product_name (产品名称)

我们的目标是计算每个产品销售数量占总销售量的百分比。

 

  • ROUND(expression, 2) 同样用于将计算结果四舍五入到小数点后两位。
  • (ps.product_quantity / ts.total_quantity) 用于计算百分比,结果会经过 ROUND 函数处理,保留两位小数。
  • 在 PostgreSQL 和 MySQL 中,ROUND(expression, 2) 都可以确保结果精确到小数点后两位。
  • ROUND 函数是标准的 SQL 函数,用于控制数字的精度

PG:

WITH total_sales AS (
SELECT SUM(quantity) AS total_quantity
FROM sales
),
product_sales AS (
SELECT p.product_id, p.product_name, SUM(s.quantity) AS product_quantity
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.product_id, p.product_name
)
SELECT ps.product_name,
ps.product_quantity,
ts.total_quantity,
ROUND((ps.product_quantity::float / ts.total_quantity) * 100, 2) AS percentage
FROM product_sales ps, total_sales ts;

MYSQL:

WITH total_sales AS (
SELECT SUM(quantity) AS total_quantity
FROM sales
),
product_sales AS (
SELECT p.product_id, p.product_name, SUM(s.quantity) AS product_quantity
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.product_id, p.product_name
)
SELECT ps.product_name,
ps.product_quantity,
ts.total_quantity,
ROUND((ps.product_quantity / ts.total_quantity) * 100, 2) AS percentage
FROM product_sales ps, total_sales ts;

标签:ps,product,postgresql,sales,案例,mysql,total,id,quantity
From: https://www.cnblogs.com/SunshineKimi/p/18573847

相关文章

  • inode的特殊作用及案例
    inode的特殊作用及案例由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象1.有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用2.移动文件或重命名文件,只是改变文件名,不影响inode号码。3.打开一个文件以后,系统就以i......
  • Vue-购物车案例
    需求实现购物车效果修改数量,总价格会实时计算点击按钮移除书籍代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metan......
  • spring(四)转账日志(事务案例)
    一、转账业务追加日志分析实现任意两个账户间转账操作,并对每次转账操作在数据库进行留痕即:A账户减钱,B账户加钱,数据库记录日志无论转账操作是否成功,均进行转账操作的日志留痕二、事务传播行为事务传播行为:事务协调员对事务管理员所携带事务的处理态度  添加日志是一......
  • spring(二)IOC案例和DI案例
    一、IOC案例实现步骤:第一步、使用Maven导入Spring坐标<dependencies><!--导入spring的坐标spring-context--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><v......
  • JAVA开源毕业设计 渔具租赁系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T005,文末自助获取源码\color{red}{T005,文末自助获取源码}......
  • JAVA开源毕业设计 历史学习网站 Vue.JS+SpringBoot+MySQL
    本文项目编号T004,文末自助获取源码\color{red}{T004,文末自助获取源码}......
  • JAVA开源毕业设计 加油站管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T003,文末自助获取源码\color{red}{T003,文末自助获取源码}......
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现十一
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现十二
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • datax MySql --> Hive实现
    配置文件{"job":{"setting":{"speed":{"channel":3},"errorLimit":{"record":0,"percentag......