我习惯用t-sql中的查询编写组。在t-sql group by
中,这将生成一个列表,其中具有相同categorytext的项目组合在一起,然后类别文本组中具有相同类型文本的项目将组合在一起。但这似乎不是这里发生的事情:
Select "CategoryText", "TypeText"
from "NewOrleans911Categories"
group by "CategoryText", "TypeText";
这是postgres的一些输出。为什么NAs没有组合在一起?
CategoryText; TypeText
"BrokenWindows";"DRUG VIOLATIONS"
"NA";"BOMB SCARE"
"Weapon";"DISCHARGING FIREARMS"
"NA";"NEGLIGENT INJURY"
答案 0 :(得分:2)
在t-sql组中,这将生成一个列表,其中具有相同categorytext的项目组合在一起,然后类别文本组中具有相同类型文本的项目将组合在一起。
在SQL中,未指定查询返回行的顺序,除非您输入order by子句。通常,您将按查询返回的顺序获取行,这完全取决于查询计划。 (最好我知道,t-sql也这样做。)
无论如何,您需要添加缺少的order by子句以获得预期结果:
Select "CategoryText", "TypeText"
from "NewOrleans911Categories"
group by "CategoryText", "TypeText"
order by "CategoryText", "TypeText";
或者(我怀疑这是你真正想要的)用order by子句替换group by:
Select "CategoryText", "TypeText"
from "NewOrleans911Categories"
order by "CategoryText", "TypeText";
答案 1 :(得分:0)
您正在按两列“分组”。当记录与两列匹配时,行仅被“分组”。
在这种情况下,两个NA都有不同的TypeText,因此它们不会分组。就像使用一个独特的,在这种情况下将完成相同的事情。
答案 2 :(得分:0)
您可能需要这样的查询:
select distinct on ("CategoryText") "CategoryText", "TypeText"
from "NewOrleans911Categories"
因为使用group by
,您无法选择不在group by
语句中的列。