sql - 在连接表中对总计进行分组和求和
问题描述
我有两张桌子药物和库存。我正在尝试从两个表中选择以下所有详细信息,但在 INVENTORY 表中也有多个具有不同 BRANCH_NO 的药物 ID 列表(INVENTORY 中的主键实际上是 BRANCH_NO,MEDICATION_ID 复合键)
我需要汇总各种药物 ID,并在一个 SELECT 命令中加入表格,并在每行末尾显示每种药物的所有信息(有 5 个)以及每种药物的总和。但是我在尝试 Group by 和 Sum 以及在某一点进行分区时变得一头雾水。请帮助我是新手。
以下是最新的非工作版本 - 但它不显示
- 药物名称
- 药物描述
- 制造商
- 包装尺寸
就像我碰巧一样。
SELECT I.MEDICATION_ID,
SUM(I.STOCK_LEVEL)
FROM INVENTORY I
INNER JOIN (SELECT MEDICATION_NAME, SUBSTR(MEDICATION_DESC,1,20) "Medication Description",
MANUFACTURER, PACK_SIZE FROM MEDICATION) M ON MEDICATION_ID=I.MEDICATION_ID
GROUP BY I.MEDICATION_ID;
For the data imagine I want this sort of output:
MEDICATION_ID MEDICATION_NAME STOCK_LEVEL OtherColumns.....
1 Alpha 10
2 Bravo 20
3 Charlie 20
1 Alpha 30
4 Delta 10
5 Echo 20
5 Echo 40
2 Bravo 10
grouping and totalling into this:
MEDICATION_ID MEDICATION_NAME STOCK_LEVEL OtherColumns.....
1 Alpha 40
2 Bravo 30
3 Charlie 20
4 Delta 10
5 Echo 60
当它只有一个表时,我可以得到这个,但是当我尝试加入表并选择一些东西时,它只是不起作用。
提前谢谢各位。我很欣赏这可能是一个简单的解决方案,但它将有很大的帮助。
解决方案
您需要将所有非聚合列显式写入SELECT
和GROUP BY
列表中(顺便说一句,无需使用嵌套查询,如果是这种情况,MEDICATION_ID
则其中缺少列):
SELECT I.MEDICATION_ID, M.MEDICATION_NAME, SUM(I.STOCK_LEVEL) AS STOCK_LEVEL,
SUBSTR(M.MEDICATION_DESC,1,20) "Medication Description", M.MANUFACTURER, M.PACK_SIZE
FROM INVENTORY I
JOIN MEDICATION M ON M.MEDICATION_ID = I.MEDICATION_ID
GROUP BY I.MEDICATION_ID, M.MEDICATION_NAME, SUBSTR(M.MEDICATION_DESC,1,20),
M.MANUFACTURER, M.PACK_SIZE;
这样,您将能够返回所有列出的列。
推荐阅读
- browser - Google oauth 首次阻止弹出窗口导致“内容安全策略指令 script-src 包含无效源:严格动态”
- javascript - 无法拉取 Github 依赖项
- ruby-on-rails - 为什么 app 初始化后 object_id 会发生变化?
- ios - 升级到 RN 0.66 和 Xcode 13 'gtest/gtest.h' 文件后无法在 Xcode 上构建 iOS 应用程序
- php - WooCommerce 来自变体属性的打开模式 - 类似于尺寸图
- apache-kafka - 使用已注册架构的 kafka-avro-console-consumer - 错误 500
- javascript - 如何成功注销并导航回 React-Native 中的主应用程序屏幕?
- javascript - 将字符串时间转换为时间戳以计算日期时差?
- java - Java,从长字符串中提取定义字符内的整数值
- spring - 终端中 SpringBoot REST API 的邮递员 POST 调用中不支持的媒体类型