【问题标题】:Why am I not getting a distinct grouping here?为什么我在这里没有得到一个独特的分组?
【发布时间】:2014-02-06 20:02:09
【问题描述】:
SELECT "STORE VISIT",STORE,USERVISITED 
FROM ECRSURVEY 
WHERE "STORE VISIT" > '2014-01-01     00:00:00.000'
GROUP BY STORE, "STORE VISIT", UserVisited

这不应该返回 STORE 列的不同分组吗?我的结果是同一个 STORE 的多个条目。

【问题讨论】:

  • 您将获得STORE, "STORE VISIT", UserVisited 的独特组合
  • 什么是UserVisited
  • group by 更改为group by store
  • 您能给我们一个查询来创建您的表并在其中插入一些示例行吗?另外,您的预期输出是什么?
  • 您可能想了解Group By 的工作原理。

标签: sql sql-server


【解决方案1】:

要与众不同STORE

SELECT STORE 
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'
GROUP BY STORE

SELECT DISTINCT STORE 
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'

如果你对其他两个字段进行聚合,那么你应该得到唯一的行

SELECT STORE 
       NumStoreVisit = COUNT("STORE VISIT"), 
       NumUserVisited = COUNT(UserVisited)
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'
GROUP BY STORE

但如果您的数据结构如下,那么您要求的是不可能的:

【讨论】:

  • 如果我这样做,我将无法获得我需要的其他两列的数据。仅返回 store 列。这三个我都需要。
  • 如果我尝试仅按商店分组,我会收到错误消息,因为其他两个字段不在 group by 子句中。
  • 您返回的多行是否完全相同?或者它们在“STORE VISIT”和 USERVISITED 中有不同的值吗?
  • 为什么在尝试获得独特的商店时,他的选择是正确的。如果您试图获得一个不同的商店,其数据如Whytheq 的不可能表中所示,您是否希望其他值用逗号分隔?如果是,请查看以下答案:stackoverflow.com/questions/18235693/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2021-11-08
  • 2016-11-22
  • 2015-10-25
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
相关资源
最近更新 更多