sql - 如何使 max() 函数只输出一行
问题描述
Select MAX(end_contract-start_contract), job_description, employer_name
FROM contracts join jobs on contracts_job = jobs_id
join employers on contracts_client = employer_id
WHERE contracts_end is not NULL
GROUP BY jobs_id,jobs_desc,employer_name
此查询当前输出:
MAX(end_contract-start_contract) jobs_desc employer_name
-------------------------------- --------------- ------------------------------
153 Janitor Microsoft
80 Soldier Microsoft
119 UNDEFINED USPS
290 UNDEFINED Microsoft
89 Pilot USNC
119 Cook USNC
232 driver USNC
340 Soldier USMC
我希望输出为:
MAX(end_contract-start_contract) jobs_desc employer_name
-------------------------------- --------------- ------------------------------
340 Soldier USMC
这就是我使用 max() 的原因,但我不明白为什么它不只是显示最大值。我对 SQL 很陌生
解决方案
我怀疑聚合在您的代码中没有做有用的事情。如果您想要最长期限的合同,您可以order by
和fetch
:
select c.contract_end - c.contract_start as contract_days, j.desc, e.emp_name
from contract c
inner join job j on c.contract_job = j.job_id
inner join employer e on c.contract_client = e.emp_id
where c.contract_end is not null
order by contract_days desc
fetch first 1 row with ties
推荐阅读
- tensorflow - 如何使用张量流模型计算对象?
- php - 在 wordpress 或 woocommerce 默认搜索查询中使用 Soundex?
- r - 使用 abs() 函数对数据集进行排序
- java - 将 .csv 文件导入 java,将其拆分为数组或字符串
- sed - 打印跨越多个文件的两个时间戳之间的行
- bash - 在ubuntu中通过命令行设置时间同步
- r - 如何在 R Shiny 中实现 OOPS 类对象?
- r - GGPLOT 将堆叠条形图中的标签与数据子集对齐
- python - 查找段是否在另一个段的距离内
- python - 如何有效地添加或乘以 numpy 数组的每个第 N 个元素?