我希望在A列和B列之间选择具有相同值的行。
例如,如果我的表是:
-----
A | B
-----
1 | 2
3 | 4
1 | 2
4 | 5
产出应是:
A B
1 2
一个SELECT DISTINCT A, B FROM table;
选择表中的所有值。
B SELECT DISTINCT (A, B) FROM table;
告诉我不同的函数只能取一个值。
C SELECT A, B FROM table GROUP BY A, B;
选择表中的所有值(类似于A)。
这个问题类似于,但答案表明这是行不通的。
这个问题出现在许多实际情况中,其中缺少的值要替换为从剩余可用值确定的期望值。我正在尝试计算列A除以n列的平均值,例如C1,...,Cn,它们可以具有空值。每当其中一列为null时,我希望替换计算的平均值,使其超过其他列中存在的值,并排除null列。例如,如果只有3列(c1、C2和C3),其中所有三列都有值,我想报告这三列中子组的平均值。当缺少一列时,例如第三列,则对其他两列的值计算平均值。如果还缺少第二列,则仅对一列的值计算平均值。
因此,一个答案是只需报告:
Select Avg(A) as AvgA
From Table
Group by C1, C2, and C3
对于C3为null且
有时,当大容量数据加载时,建议临时删除表上的约束和索引。但是当我这样做的时候,我面临着一些依赖的问题。我的简化例子:
CREATE TABLE public.t_place_type
(
id serial NOT NULL,
c_name character varying(100),
CONSTRAINT pk_t_place_type PRIMARY KEY (id)
);
CREATE TABLE public.t_place
(
id serial NOT NULL,
c_name character varying(50),
id_place_type i
我有下面的表和数据,我想合并一个列中的loc1和loc2,并删除重复的值从锁列,然后根据group_no列分组。
drop table test;
create table test (loc1 number(9), loc2 number(9), group_no number(9));
insert into test values(2,3,1);
insert into test values(2,9,1);
insert into test values(4,3,1);
insert into test values(6,8,2);
insert into test values(11
这是一个有效的语句(其中id是表的主键):
select * from table group by id ;
而这并不是:
select * from table group by name ;
错误:列"pgluser.id“必须出现在GROUP子句中或在聚合函数中使用
小提琴。
问题是为什么第一个查询是合法的(为什么按主键分组是有效的?)
我有一个mysql表,其中有3列:
id intname varchartime时间戳CURRENT_TIMESTAMPflag布尔
我使用这样的查询将结果按日分组:
SELECT COUNT(DISTINCT name), DATE(time) as day FROM `table` GROUP BY day
这很好,但我真正想要的是将COUNT(DISTINCT name) WHERE FLAG = 0和COUNT(DISTINCT name) WHERE FLAG = 1放在同一个查询中,并在白天对它们进行分组。
我怎么能这么做?
假设我只想返回列值至少发生两次的行。
我会做这样的事
SELECT
table1.columnA
from table1
GROUP BY
table1.columnA
HAVING COUNT(*) > 2
这只适用于一个列,但如果我想返回几个列,但只有筛选器应用于一个列,则不起作用。我的尝试是
SELECT
table1.columnA,
table1.columnB,
from table1
GROUP BY
table1.columnA
HAVING COUNT(*) > 2
它提供了一个“既不是分组也不是聚合的ColumnB”错误。
从这篇文章来看,我似乎需要在S
CREATE TABLE public.temp (
id integer,
a integer,
b integer,
x integer
);
select x, a, b
from temp
group by id, a, b;
最后是预期的错误:
错误:列“tem.x”必须出现在GROUP子句中,或者在聚合函数行1中使用:选择x,a,b^
但是,在添加主键之后:
ALTER TABLE ONLY temp ADD PRIMARY KEY (id);
..。前面的SELECT查询运行时没有错误。
为什么现在可以使用列x而不进行聚合?
行为记录在
我正努力让我的头脑在Postgesql和分组的联系。
我有一个has_many重复的试验。我想按重复的列分组,以便在变量中使用。目前我有:
@trials = Trial.joins(:repetitions).group('repetitions.repetition_index')
但要知道这个错误。
PG::GroupingError: ERROR: column "trials.id" must appear in the GROUP BY clause or be used in an aggregate function
现在,通过阅读有关这方面的
SELECT COUNT([Table].[CustomerID]), AVERAGE([Table].[Values])
FROM [Table]
GROUP BY [Table].[Country]
Where Max([Table].[Date]) < PowerBI_Max_Date_Slicer and Min([Table].[Date]) > PowerBI_Min_Date_Slicer
我想先应用时间切片,然后在PowerBI中对过滤后的数据进行groupby。
我尝试过很多方法,这里和其他论坛都提到过,但仍然被塞进了其中:
当我运行查询时
select a, group_concat(b) from table1 group by a
工作得很完美。
我把它放在一个子查询中,例如。
select table2.c, t1.conc
from table2
inner join (
select a, group_concat(b) as conc
from table1 group by a) as t1
on t1.a = tabke2.d`
我明白了:
SELECT list的表达式#1不在GROUP BY子句中,包含非聚合
我试图根据文本值在分组数据中生成索引列。
我现在的情况是:
#"Changed Type" = Table.TransformColumnTypes(#"Filtered Rows1",{{"Source.Name", type text}, {"Team", type text}, {"Project category", type text}, {"Project type", type text}, {"Role", type text}, {"Month",
由于错误,“列在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”我想知道,经过这么多分组之后,Group中列出的列是否不再影响查询。例如,我在下面放置了一个简单的查询。
Select FlockType, FarmNo, SettleDate, Sum(Weight) as Weight, Area, Size
FROM Table
WHERE SettlementDate BETWEEN '2018-01-01' AND '2018-02-01
GROUP BY FlockType, FarmNo, SettleDate,
我正在尝试编写一个自定义公式来获取每个项目编号(第1列)和移动类型(第7列)的最大日期(第4列)。我意识到我可以通过项目编号和移动类型分组来获得结果,但希望在整个数据集中以单独列的形式查看结果。[ 下面的应用步骤将得到结果。有没有一种方法可以使用条件max语句来做到这一点? = Table.Group(#"Renamed Columns1", {"Item Number", "Movement Type Name"}, {{"Max Date", each List.Max([Date]), type nullable dat