SQL查询仅显示最小计数行

时间:2015-05-21 11:53:19

标签: sql oracle11g count min

我试图仅显示属于具有最小类别总数

的类别的汽车的成本值

这是我尝试使用的查询:

select model, VIN,cost
from stock

期望的输出:

Model -     VIN       - Cost
STI     XXXXXXXXXXXX    $55,000

据我所知,拥有运营商可用于计算每种类型汽车的最低类别总数:

having count(distinct category)=(select min(count(category)) 
from stock group by category)

但我不确定如何实现这样的运算符

2 个答案:

答案 0 :(得分:1)

如果我理解正确,这个查询比看起来有点棘手。使用子查询获取每个类别的计数,使用窗口函数获取最小计数。然后将其加入原始数据:

    function  getAllComments($node) {
        if ($node->hasChildNodes()) {
            foreach ($node->childNodes as $child) {
                $this->getAllComments($child);
                if ($child->nodeType == XML_COMMENT_NODE) {
                    echo  $child->textContent;
                }
            }

        }
    }

    $html = $qp->get() ;
    getAllComments($html[0]);

答案 1 :(得分:1)

with    cnt_stock as
        (
        select  count(*) over (partition by category) cat_cnt
        ,       model
        ,       category
        from    stock
        )
select  *
from    cnt_stock
where   cat_cnt = 
        (
        select  min(cat_cnt)
        from    cnt_stock
        )

Example at SQL Fiddle.