繁体   English   中英

如何在 SQL 的表格中找到总销售额?

[英]How do I find total sales in my table on SQL?

试图计算每个月的销售总数,哪个表格显示了每个销售发生的日期。

我的代码如下:

WITH sales_months AS (
  SELECT
  '2018-01-01' AS first_day,
  '2018-01-31' AS last_day
UNION
  SELECT
  '2018-02-01' AS first_day,
  '2018-02-28' AS last_day
UNION
  SELECT
  '2018-03-01' AS first_day,
  '2018-03-31' AS last_day
UNION
  SELECT
  '2018-04-01' AS first_day,
  '2018-04-31' AS last_day
UNION
  SELECT
  '2018-05-01' AS first_day,
  '2018-05-31' AS last_day
UNION
  SELECT
  '2018-06-01' AS first_day,
  '2018-06-31' AS last_day
UNION
  SELECT
  '2018-07-01' AS first_day,
  '2018-07-31' AS last_day
UNION
  SELECT
  '2018-08-01' AS first_day,
  '2018-08-31' AS last_day
UNION
  SELECT
  '2018-09-01' AS first_day,
  '2018-09-31' AS last_day
UNION
  SELECT
  '2018-10-01' AS first_day,
  '2018-10-31' AS last_day
UNION
  SELECT
  '2018-11-01' AS first_day,
  '2018-11-31' AS last_day
UNION
  SELECT
  '2018-12-01' AS first_day,
  '2018-12-31' AS last_day
)
cross_join AS (
SELECT *
FROM sales_2018
CROSS JOIN sales_months
),
purchase AS (
SELECT GlobalCustomerID, first_day AS sales_month,
CASE 
    WHEN (SoldDate BETWEEN first_day AND last_day)
    THEN 1
    ELSE 0
END AS purchased
FROM cross_join
),
purchase_total AS (
SELECT
  month,
  sum(purchased)
FROM purchase
GROUP BY month;

它返回一个错误

错误代码:1064。您的 SQL 语法有错误; 查看与您的 MySQL 服务器版本相对应的手册,了解在“cross_join AS”附近使用的正确语法(SELECT * FROM sales_2018 CROSS JOIN sales_months),在第 50 行购买 AS '

我相信这可能是我如何格式化我的日期的问题?

任何帮助表示赞赏。

你能分享更多你的表结构是什么样的吗? 如果您想要按月计算销售额总和,您真的不需要确定每个月的第一个/最后一个(尤其是不需要手动)。 这样的事情会更直接,但我不确定你的架构,所以它可能需要调整。

SELECT 
      YEAR(SoldDate)
    , MONTH(SoldDate)
    , COUNT(GlobalCustomerID)
FROM sales_2018
GROUP BY YEAR(SoldDate), MONTH(SoldDate)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM