如何解决有和没有聚合的SQL查询
我有4个这样创建的表
CREATE TABLE IF NOT EXISTS customers (
ssn CHAR(11) PRIMARY KEY,first_name VARCHAR(32),last_name VARCHAR(32),country VARCHAR(16)
);
CREATE TABLE IF NOT EXISTS credit_cards (
ssn CHAR(11) REFERENCES customers(ssn),number VARCHAR(20) PRIMARY KEY,type VARCHAR(32)
);
CREATE TABLE IF NOT EXISTS merchants (
code CHAR(10) PRIMARY KEY,name VARCHAR(64),country VARCHAR(16)
);
CREATE TABLE IF NOT EXISTS transactions(
identifier INTEGER PRIMARY KEY,number VARCHAR(20) REFERENCES credit_cards(number),code CHAR(10) REFERENCES merchants(code),datetime TIMESTAMP,amount NUMERIC
);
我想找到没有针对每种信用卡进行交易的不同商人的代码和名称。我想知道一种使用聚合的方法,一种不使用聚合的方法。
预先感谢您的帮助
解决方法
我将其理解为关系划分问题。您希望没有针对每种可能的信用卡类型进行交易的商人。
一种选择是使用hading子句进行聚合和过滤:
select m.*
from merchants m
inner join transactions t on t.code = m.code
inner join credit_cards cc on cc.number = m.number
group by m.code
having count(distinct cc.type) < (select count(distinct type) from credit_cards)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。