PGSQL里,在2019年3到6月期间内,有销售记录的各个区域(region)的销售金额,以及它们的销售金额占比*100,结果四舍五入后保留两位小数,按销售金额有大到小排序。
时间: 2024-04-21 12:23:02 浏览: 144
osm2pgsql:OpenStreetMap数据到PostgreSQL转换器
在PostgreSQL中,你可以使用SQL查询来解决这个问题。假设你有一个名为"sales"的表,其中包含销售日期(sale_date)、区域(region)和销售金额(sales_amount)三列,以下是一个可能的查询示例:
```sql
SELECT region,
SUM(sales_amount) AS total_sales_amount,
ROUND(SUM(sales_amount) / (SELECT SUM(sales_amount) FROM sales WHERE sale_date >= '2019-03-01' AND sale_date < '2019-07-01') * 100, 2) AS sales_percentage
FROM sales
WHERE sale_date >= '2019-03-01' AND sale_date < '2019-07-01'
GROUP BY region
ORDER BY total_sales_amount DESC;
```
这个查询首先筛选出2019年3到6月期间的销售数据(sale_date >= '2019-03-01' AND sale_date < '2019-07-01'),然后按区域进行分组。通过使用嵌套查询计算总销售金额,并在外部查询中使用SUM函数计算每个区域的总销售金额。然后,通过除以总销售金额并乘以100,计算每个区域的销售金额占比。最后,使用ROUND函数将占比四舍五入并保留两位小数。最后,按销售金额由大到小排序(ORDER BY total_sales_amount DESC)。
请根据你的实际情况修改表名和列名以适应你的数据库结构。希望这个查询能满足你的需求。如果你还有其他问题,请随时提问。
阅读全文