Java SQL Derby:未选择分组依据id
我正在使用。 我有一个有两列X和Y的表。 我想选择X列,但按Y列分组。 这意味着我只想为每一行显示一个X值,其中第一个Y值为该行 我该怎么做Java SQL Derby:未选择分组依据id,java,sql,select,derby,Java,Sql,Select,Derby,我正在使用。 我有一个有两列X和Y的表。 我想选择X列,但按Y列分组。 这意味着我只想为每一行显示一个X值,其中第一个Y值为该行 我该怎么做 CREATE TABLE test ( x INTEGER NOT NULL , y INTEGER NOT NULL ) INSERT INTO test VALUES (1,1) ,(1,2) ,(1,3) ,(2 ,3),(3,3) SELECT y FROM test GROUP BY x -- does not work
CREATE TABLE test (
x INTEGER NOT NULL ,
y INTEGER NOT NULL )
INSERT INTO test VALUES (1,1) ,(1,2) ,(1,3) ,(2 ,3),(3,3)
SELECT y FROM test GROUP BY x -- does not work
我希望所有y值都不重复
原始数据
结果应该是:
X Y
-- --
1 1
1 2
2 3
必须指定所需的X
select
min(X) X
from
table
group by
Y
您必须以某种方式执行x:
SELECT Y,
MAX(X) AS Max_X,
AVG(X) AS Avg_X
FROM myTable
GROUP BY Y
ORDER BY Y
最小、最大、平均、第一、最后等
如果您不在乎得到哪个x,也许只需选择第一个或最后一个:
SELECT Y,
First(X) AS X,
FROM myTable
GROUP BY Y
我不熟悉Derby,但可以尝试以下子查询:
SELECT X
FROM table
WHERE Y in (SELECT MIN(Y) FROM table)
这里从表中选择MINY是为了选择Y的值,即您的“第一个Y值”,这里:Y的最小值。您希望在x上得到什么聚合-最大值,最小值?在您的情况下,“第一个Y值”是什么?您的问题有点不清楚。发布一些示例数据和此数据所需的输出将非常有帮助。您可以填写结果的详细信息吗?当Y为3时,如何为X选择2?我不需要任何聚合方法我需要不重复的值
SELECT X
FROM table
WHERE Y in (SELECT MIN(Y) FROM table)