mysql - 查找从未处理过某个项目的部门
问题描述
我有 2 张桌子
dept:
dept_name
...
sale:
sale_num
sale_qty
item_name
dept_name
我想找到从未处理过 max(sum(sqty)) 表示的最受欢迎项目的部门
我该怎么做呢?
解决方案
我认为你可以分两步做到这一点
- 首先使用子查询确定热门项目
- 然后将 sql 写入不从该子查询中选择数据。
获取热门商品 -
select item_name,qty from (
select item_name, qty , rank() over (order by qty desc ) rn from (
select item_name, sum(qty ) qty from sale group by item_name) rs) where rn = 1
然后你可以编写一个简单not in ()
的来获取所需的部门。完整的 SQL 应该如下所示 -
select distinct d.* from dept d, sales s
where d.dept_name = s.dept_name and
s.item_name not in (
select item_name from (
select item_name, qty , rank() over (order by qty desc ) rn from (
select item_name, sum(qty ) qty from sale group by item_name) rs)rs2 where rs2.rn = 1
)
请注意,我使用 item_name 作为标识符,并且名称有时会导致问题(我更喜欢 item id)。我在 Oracle 上进行了测试,所以请在实施之前在您的 mysql 上进行测试。
推荐阅读
- hive - Redshift Spectrum 和 Hive Metastore - 模棱两可的错误
- vectorization - 需要 pytorch 中的矢量化解决方案
- python - 烧瓶中的多选字段
- java - Genson在JDK7中序列化失败
- python - 如何将脚本的输出重定向到 tkinter 窗口?
- java - 将 ifPresent 与 orElseThrow 一起使用
- soap - Oracle SOA Suite 12c 使用附加的 SOAP 标头调用外部服务
- tensorflow - tensorflow 坚持“为流创建 CudaSolver 句柄”而不前进
- vb.net - 如何添加另一个检测路径丢失的条件
- laravel-5 - Laravel-websocket 无法通过 apache2 连接到 Azure VM