mysql - 在 MySQL 中,我的日期格式为 (mm-dd-yyyy),因此无法检索 2020 年的总销售额
问题描述
我有三张桌子
- car_model:ID、名称、价格
- 国家:身份证,姓名
- 销售:model_id、country_id、数量、sales_date
表销售中其汽车的所有国家明智销售记录,存储特定日期的销售数量
需要编写一个查询来计算所有车型的国家销售额以及 2020 年生成的总销售额(按升序排列)
SELECT
country.name, car_model.name,
SUM(car_model.price * sales.quantity) AS total_sales
FROM sales
JOIN country ON country.id=sales.country_id
JOIN car_model ON car_model.id=sales.model_id
WHERE sales.sales_date between '01-01-2020' and '12-31-2020'
GROUP BY country.name,car_model.name
ORDER BY total_sales asc;
这是我尝试过的代码,但它提供了多年来的输出,我只需要 2020 年的销售记录
#这个问题来自Hackerrnk,所以我不能显示表结构
解决方案
尝试以下解决方案。
WITH models
AS (SELECT car_model.NAME
FROM car_model
JOIN sales
ON ( sales.model_id = car_model.id )
GROUP BY 1)
SELECT country.NAME,
models.NAME,
Sum(sales.quantity * car_model.price)
FROM country
JOIN sales
ON ( country.id = sales.country_id )
JOIN car_model
ON ( sales.model_id = car_model.id )
JOIN models
ON ( car_model.NAME = models.NAME )
WHERE sales_date LIKE '%2020%'
GROUP BY 1,
2
ORDER BY 3;
推荐阅读
- python - conda-env create 失败并出现一般错误消息“发生意外错误”。
- html - 如何从用户那里获取 React js 中的图像 uri
- php - Fopen 没有看到 /dev/usb/lp0
- flutter - Flutter:一个 FocusNode 被处理后使用
- java - 云环境中如何处理多个请求
- jms - Spring 集成 - 缺少自定义 IBM MQ JMS 标头
- ssl - TLS 的 Tcpdump 过滤器不起作用 - “(tcp[((tcp[12] & 0xf0) >>2)] = 0x16)”
- sqlite - 如何将时间信息保存到 Xamarin 中的 SQLite 文件中?
- angular - 角!和奇偶
- python - 如何在python中对DataFrame进行切片并以列表的形式将行与DataFrame分开