【问题标题】:Rows Selected in SQL ResultsSQL 结果中选择的行
【发布时间】:2018-01-19 09:04:28
【问题描述】:

我正在运行一个简单的查询来按某些列进行分组。我使用的文件有 99,000 行。执行查询后,它说它们只有 72,979 行。此外,在整个结果网格中(请参阅结果屏幕截图中的第 47 行),它会显示选定的行数。我的查询是否省略了这些行?如果是这样,我该如何包含它们?

谢谢。

use [OMNI Digital]

select GL_PERI, EVENT, EVT_PRICE, TRANS_AMT, TRAFFIC_PROG, CONTRACT, 
EVENT_DESC, DELIV, FMT, BUY_OR_CREDIT, Count(ACCOUNT)

from Duplicate_2013006

group by GL_PERI, EVENT, EVT_PRICE, TRANS_AMT, TRAFFIC_PROG, 
CONTRACT, EVENT_DESC, DELIV, FMT, BUY_OR_CREDIT

结果截图

【问题讨论】:

  • 为什么在 GROUP BY 子句中包含 ACCOUNT?另外,DATE_BILLED 和 DATE_INGEST 不在您的 SELECT 中?
  • 避免使用两个数据库标签,因为它是不同的。要么是mysql,要么是sql
  • 由于 GROUP BY 子句,只有 72,979 行。 GROUP BY 将合并/分组任何完全相同的行,并且每个您在 GROUP BY 中指定的列的不同值仅返回 1 个结果。更改列,看看会发生什么
  • 最好包含一些示例数据和预期结果,而不是提供查询。
  • 我同意@matt 这是因为group by 条款。您的查询返回分组依据字段的所有计数。这就是为什么你得到的结果低于你的预期。

标签: mysql sql sql-server sql-server-2008


【解决方案1】:

使用 COUNT(1) over(partition by.....) 这将防止 Rollup 与 group by 关联

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多