sql - 比较单个表的 SELECT 查询
问题描述
我正在使用一个包含大约 2000-3000 行的车辆表,其中包含一个车辆品牌/型号以及一个状态(有许多不同的状态,我担心“T”和“Y”)。我想创建一个查询,该查询将返回与条目具有相同品牌/型号但状态不同的车辆数量。例如:
INSERT INTO my_db(make, model, status) VALUES ("BMW", "6-SERIES", "T")
INSERT INTO my_db(make, model, status) VALUES ("BMW", "6-SERIES", "Y")
INSERT INTO my_db(make, model, status) VALUES ("BMW", "6-SERIES", "Y")
我希望我的查询返回“1”,因为我们有一辆宝马 6 系,在某些时候与 T 和 Y 匹配。我怎样才能做到这一点?我试图创建两个单独的表并进行连接,还尝试了一个子选择,但我似乎无法让它工作。
编辑:我应该澄清一下 - 如果品牌/型号有 T 和 Y 的条目,我只希望它添加到计数中,而不是一般的不同状态。
解决方案
如果你想计算行数count(*)
,你可以使用:exists
select count(*)
from my_db d1
where exists (select 1
from my_db d2
where d2.make = d.make and d2.model = d.model and
d2.status <> d.status
);
如果您想计算品牌/型号组合,我会建议两个级别的聚合:
select count(*)
from (select make, model
from t
group by make, model
having min(status) <> max(status)
) mm;
推荐阅读
- c++ - 当其中一个为负时,如何将两个 16 位值组合成一个 32 位值?
- java - Java流flatMap,将第一级和第二级对象保留在流中
- netsuite - Netsuite 将发票转换为自定义记录计划脚本
- vega - 如何从点击事件中获取规范内的缩放坐标?
- arrays - 有没有办法将 Array Ref as String 转换为 Perl 中的实际 Array ref?- 不能使用 string("ARRAY(...)") 作为 ARRAY ref
- python - python中有没有办法从2个列表中创建一个新列表,其中第一个列表值用于组成新列表的列表?
- ios - Keychain Swift 中的多个帐户
- google-chrome-devtools - ChromeDevTools:突出显示由 css 类选择的项目?
- c - 使用 Magick Wand API 从图像中获取二进制数据
- c# - WCF Rest 服务的 Swagger 实现