mysql - 尝试学习 SQL 查询
问题描述
一般来说,我对所有 SQL 查询语言和 SQL 数据库都很陌生所以在挖掘了永恒之后,我似乎仍然无法解决这些
我有一组表
PERSON(SSN, Name, Surname, BirthDate)
EVALUATION(CodE, Date, City, CompetitionType)
BID(SSN, CodE)
RANKING(CodE, Position, SSN )
我需要制作并运行这 3 个查询
1) 显示 2010 年 1 月期间始终在同一城市进行的评估类型。
2) 对于每一个申请“3 级员工”类型评估但未出现在最终排名中的人,显示 SSN、姓名、姓氏和未出现在排名中的评估代码。
3) 显示至少进行过 10 次同类评估的城市,每个城市至少有 50 个投标。
到目前为止我已经尝试过
1)
SELECT E.CompetitionType
FROM Evaluation E
WHERE E.Date>="01.01.2010" and E.Date <="31.01.2010"```
// I don't know how to check for the same cities
2)
SELECT P.SSN, P.Name, P.Surname, E.CodE,
FROM PERSON P
在那之后只是空白......
3)
SELECT *
FROM EVALUATION E
JOIN BID where BID.CodE = E.CodE
HAVING COUNT(*) > 50
再次甚至无法检查相同的类型
更新以显示到目前为止我尝试过的内容
解决方案
问题 1 是直接聚合查询,在having
子句中进行过滤
select competitionType
from evaluation
where date >= '2010-01-01' and date < '2020-01-01
group by competitionType
having min(city) = max(city)
我会用一个连接来表达查询 2,但不存在:
select p.ssn, p.name, p.surname, b.code
from person p
inner join bid b on b.ssn = p.ssn
where not exists (select 1 from ranking r where r.ssn = b.ssn and r.code = b.code)
至于查询 3,您可以从, 开始,在子句中evaluation
使用相关子查询进行过滤,然后通过和聚合并使用子句进行过滤:bid
where
city
competition
having
select e.city, e.competitionType
from evaluation e
where (select count(*) from bid b where b.code = e.code) >= 50
group by e.city, e.competitionType
having count(*) >= 10
推荐阅读
- android - 如何仅使用 GPS 获取纬度和经度
- java - 如何修复 'MediaPlayrer mp = new Mediaplayer.create(this, R.raw.filename.mpr) ' 因为 create 是红色的错误
- wordpress - 联系表 7 - 将占位符添加到日期字段
- json - 在 Hive 中,当路径中有 `$` 符号时如何正确使用 get_json_object 提取值
- python-3.x - 搜索多个关键字和对应的索引
- bash - 获取每个文件中找到的数字的平均值到两个小数位
- google-apps-script - 如何仅通过 Google 表格中相应文件的名称打开电子表格?
- c# - 我可以指定 Web-Api 方法需要 Swashbuckle/Swagger 生成的页面/json 中的文件吗
- python - Seaborn 或 Matplotlib 的语义差分图
- javascript - 如何从 SQL 中的日期时间中删除时间