我在SQL Server上做了以下练习:编写一个查询,为每个聚类列出属于该聚类的产品数量。该公司希望获得关于每个订单中每种产品的平均数量的销售分析,将它们分类为六个聚类:Q1(〈15)、Q2(15-20)、Q3(21-25)、Q4(26-30)、Q5(31-35)、Q6(〉35)。编写一个查询,列出每个产品的产品名称及其所属的群集。数据库为northwind
第一个
我还需要显示Q1和Q5的值。
我在SQL Server上做了以下练习:编写一个查询,为每个聚类列出属于该聚类的产品数量。该公司希望获得关于每个订单中每种产品的平均数量的销售分析,将它们分类为六个聚类:Q1(〈15)、Q2(15-20)、Q3(21-25)、Q4(26-30)、Q5(31-35)、Q6(〉35)。编写一个查询,列出每个产品的产品名称及其所属的群集。数据库为northwind
第一个
我还需要显示Q1和Q5的值。
3条答案
按热度按时间qlvxas9a1#
您 可以 随时 植入 初始 计数 , 例如 :
中 的 每 一 个
现在 , 所有 组 的 初始 计数 都 为 零 , 并 将 在 查询 中 找到 的 计数 添加 到 该 初始 计数 中 。
未经 测试 , 所以 请 让 我 知道 , 如果 你 发现 错误 . . .
j5fpnvbx2#
您不需要临时表或表变量,可以使用虚拟
VALUES
子句来生成所有行。您还可以通过将范围编号也放入该表中来显著简化此操作。
为了提高效率(以及可能的准确性),还应按产品ID或主键进行分组。
请注意,上面的查询只获取实际销售的产品的结果。
tag5nh1u3#
通过将簇 * 和范围 * 存储在一个表中,可以使查询更加简单(这样就可以在使用相同细分的其他类似查询中重用它)。
工作示例in this fiddle。
同样,除非
ProductName
不是唯一的,并且您真正关心的是具有相同名称的不同ID之间的平均值,而不仅仅是产品ID,否则连接是不必要的,您可以进一步简化: