【问题标题】:SQL Count returns wrong resultSQL Count 返回错误的结果
【发布时间】:2013-10-15 10:31:12
【问题描述】:

我的 SQL 查询:

              SELECT
                TO_CHAR(se2.ID) S_ID,
                TO_CHAR(se2.file_name) S_NAME,
                TO_CHAR(pl.pid) P_ID,
                count (*) COUNTER
              FROM
                pl
              join po on po.id = pl.po_id 
              join ppl on po.fk_product_id = ppl.fk_product
              join se on se.id = po.fk_product_id
              join  se2 on se2.id = ppl.fk_parent
              WHERE 
                pl.project_id = 227739470
              GROUP BY se2.ID, se2.file_name, pl.pid

返回 16 行,但 count(*) 在每个结果行中都是 1! 我想获取每个结果行中所有行的数量。 这里有什么问题?

【问题讨论】:

  • 应该是什么?如果 16 行中的每一行只出现一次,那将是正确的。
  • 那我有一些逻辑问题。我想要每个结果中所有行的数量 -> 每个结果行中的“16”...

标签: sql oracle oracle11g oracle10g


【解决方案1】:

如果您希望每一行都有一个包含总行数的列,请使用:

count(*) over () total_rows

您不需要使用 group by,因为这是一个分析函数,而不是聚合函数。

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多