【发布时间】:2020-06-06 13:48:54
【问题描述】:
我需要编写一个涉及两个表的复杂查询,我正在努力理解如何正确构造查询。
表结构如下,附样本数据:
Table 1:
ID | Type | Size
A123 | Block | Medium
C368 | Square | Large
X634 | Triangle | Small
K623 | Square | Small
Table 2:
ID | Code | Description | Price
A123 | C06 | Sensitive Material | 99.99
A123 | H66 | Heavy Grade | 12.76
A123 | U74 | Pink Hue | 299.99
C368 | H66 | Heavy Grade | 12.76
C368 | G66 | Green Hue | 499.99
C368 | C06 | Sensitive Material | 99.99
C368 | K79 | Clear Glass | 59.99
X634 | G66 | Green Hue | 499.99
X634 | K79 | Clear Glass | 59.99
X634 | Z63 | Enterprise Class | 999.99
K623 | K79 | Clear Glass | 59.99
K623 | G66 | Green Hue | 499.99
K623 | X57 | Extra Piping | 199.99
查询应主要基于表 1 中的类型列,然后根据匹配的 ID 汇总表 2 中的计数。
对于 Type = Square,最终输出应该是这样的计数:
Code | Description | Count
H66 | Heavy Grade | 1
G66 | Green Hue | 2
C06 | Sensitive Material | 1
K79 | Clear Glass | 2
X57 | Extra Piping | 1
如何使用这两个表组合这个结果?这是我写的一个初始查询 - 这看起来正确吗?它产生的结果类似于上面的示例,但我不确定它是否 100% 正确并捕获所有边缘情况。
select code, description, count(*) as total
from
(
SELECT code, description
FROM db.options_list ops
INNER JOIN db.obj_list ON ops.ID = db.obj_list.ID
WHERE db.obj_list.type="Square"
) src
group by code
order by total desc
谢谢
【问题讨论】:
标签: mysql sql join group-by count