sql - 如何将一张桌子与另一张桌子连接起来并计算每天的物品登记数量?
问题描述
我在这里遇到了一个问题。我有两张表:一张是产品和仓库员工检查的日期(date_checked),另一张是销售数据,如下所示:
PRODUCTS
date_checked | product_name | category | product_id
_____________________________________________________________________
0 2021-01-01 | tv | entertainment | 100
1 2021-01-03 | laptop | business | 110
SALES
sale_date | product_name | category | product_id
_____________________________________________________________________
0 2021-01-01 | tv | entertainment | 100
1 2021-01-01 | laptop | business | 110
2 2021-01-01 | tv | entertainment | 100
3 2021-01-01 | laptop | business | 110
4 2021-01-01 | tv | entertainment | 100
5 2021-01-03 | laptop | business | 110
6 2021-01-03 | tv | entertainment | 100
7 2021-01-03 | laptop | business | 110
7 2021-01-03 | laptop | business | 110
我的目标是创建一个新表,其中包含 PRODUCTS 表的所有数据以及 date_checked 中售出的产品数量。例如:电视产品于 1 月 1 日进行了检查,同一天售出了 3 台电视。笔记本电脑于 1 月 3 日进行了检查,当天售出了 3 台笔记本电脑,如下所示:
SALES_AT_CHECK_DAY
date_checked | product_name | category | product_id | sales
_____________________________________________________________________________
0 2021-01-01 | tv | entertainment | 100 | 3
1 2021-01-03 | laptop | business | 110 | 3
我知道我需要在这里使用连接,但我无法计算在某一天售出了多少产品。你们能帮帮我吗?
非常感谢?
解决方案
首先,您的数据模型似乎很差,因为您在两个表之间重复列。您应该只输入主键,sales
然后查找其他信息。
select p.date_checked, s.product_name, s.category, s.product_id,
count(*) as sales
from sales s join
products p
on s.product_id = p.product_id and
s.sale_date = p.date_checked
group by p.date_checked, s.product_name, s.category, s.product_id;
推荐阅读
- javascript - 尝试获取对象 - 猫鼬
- tensorflow - 在张量流上乘以张量的特定单元格
- python - 使用 lambda 创建字典(内部的增量计数器)
- r - R - 将 colorQuantile() 的函数传递给 ifelse() 内的传单()的 fillColor
- android - Flutter 和 Android Studio 最大堆大小问题
- java - 如何询问用户输入并将其返回到新库存中
- python - 是否可以使用 Lab 颜色空间来分割某些颜色?
- javascript - 导入正确的文件以在 React 中使用 firebase 的实时数据库
- python - 一个看起来很奇怪的点冻结
- shell - 如何在 shell 函数中创建输出以使用 bat 进行单元测试?