计数的SQL最大值(与其他列一起)
我有一个数据库,包含3个关系报价、产品和类别。我正试图找到一个月中提供最多产品的日期。我需要返回类别名称(CN)、日期以及最大优惠数量(OD)和优惠数量(PC) 我有一个疑问:计数的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
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