【发布时间】:2014-07-17 12:35:12
【问题描述】:
我的数据库的简化示例是一个表
CN REG# CAPACITY
---------- ---------- ----------
0 LUCY02 43000
6 QRT834 5550
3 SYF777 3333
12 PKR768 1234
5 SST005 12000
6 KKK007 10000
3 PKR008 22000
这是通过连接两个表创建的。这是join语句:
select count(tp.reg#) as cn,t.reg#, CAPACITY
from truck t
join trip tp
on t.reg# = tp.reg#
group by tp.reg#, CAPACITY, t.reg#
现在,我如何编写一个语句来仅打印出现次数最少且非零的行。在我们的示例中,它是 3。
预期输出是
3 SYF777 3333
3 PKR008 22000
到目前为止我所做但没有工作的是:
select count(tp.reg#) as cn,t.reg#, CAPACITY
from truck t
left join trip tp
on t.reg# = tp.reg#
left join
(
select dd, min(d) as ds
from(
select count(*)as d, ti.CAPACITY, ti.reg# as dd
from truck ti, trip tp
where tp.reg# = ti.reg#
group by ti.reg#, ti.CAPACITY
)
group by dd
)
on t.reg# = dd
group by tp.reg#, CAPACITY, t.reg#
【问题讨论】:
-
这里有类似的东西stackoverflow.com/a/6259530/1854461 - 这对你有用吗?