计数的SQL最大值(与其他列一起)

计数的SQL最大值(与其他列一起),sql,oracle10g,Sql,Oracle10g,我有一个数据库,包含3个关系报价、产品和类别。我正试图找到一个月中提供最多产品的日期。我需要返回类别名称(CN)、日期以及最大优惠数量(OD)和优惠数量(PC) 我有一个疑问: SELECT CN, MAX(PC) FROM ( SELECT c.nombre as CN, EXTRACT(DAY FROM o.fecha) as OD, count(o.id_producto_ofertado) AS PC FROM ofertas o join (categorias c JOIN prod

我有一个数据库,包含3个关系报价、产品和类别。我正试图找到一个月中提供最多产品的日期。我需要返回类别名称(CN)、日期以及最大优惠数量(OD)和优惠数量(PC)

我有一个疑问:

SELECT CN, MAX(PC)
FROM
(
SELECT c.nombre as CN, EXTRACT(DAY FROM o.fecha) as OD, count(o.id_producto_ofertado) AS PC
FROM ofertas o join (categorias c JOIN productos p ON c.id = p.categoria) on o.id_producto_ofertado = p.id
GROUP BY  EXTRACT(DAY FROM o.fecha), c.nombre
)
GROUP BY CN
我想这是可行的。但结果与2个cols有关:CN&MAX(PC)。如果我因为需要而试图通过以下方式实现每日(OD):

SELECT CN, MAX(PC), OD
FROM
(
SELECT c.nombre as CN, EXTRACT(DAY FROM o.fecha) as OD, count(o.id_producto_ofertado) AS PC
FROM ofertas o join (categorias c JOIN productos p ON c.id = p.categoria) on o.id_producto_ofertado = p.id
GROUP BY  EXTRACT(DAY FROM o.fecha), c.nombre
)
GROUP BY CN, OD
然后它返回一个3列关系:CN、MAX(PC)和OD。但随着类别名称(CN)的重复,我认为这是因为我需要按OD分组,以便提取当天的数据。因此,报税表包含31天中每一天的一行

我只需要为每个类别名称创建一行,返回类别名称、提供最多优惠的当月的天数和提供最多优惠的天数


我现在陷入困境,因为我不知道该怎么办。谢谢

您可以使用
行编号
来选择出价最高的行:

select  CustomerName
,       OrderDate
,       OfferCount
from    (
        select  CustomerName
        ,       OrderDate
        ,       OfferCount
        ,       row_number() over (partition by CustomerName
                                   order by OfferCount desc) as rn
        from    (
                select  c.nombre as CustomerName
                ,       EXTRACT(DAY FROM o.fecha) as OrderDate
                ,       count(o.id_producto_ofertado) as OfferCount
                FROM    ofertas o 
                join    categorias c 
                on      o.id_producto_ofertado = p.id
                join    productos p 
                on      c.id = p.categoria
                group by
                        c.nombre
                ,       EXTRACT(DAY FROM o.fecha)
                ) as GroupByDay
        ) as WithRowNumber
where   rn = 1
row\u number
的子查询可能不是必需的,但我附近没有测试Oracle