SQL Derby:GROUP BY 未选择 id

发布于 2024-09-10 15:07:05 字数 568 浏览 2 评论 0原文

我正在使用 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 

我想要所有 y 值没有重复的

原始数据

X    Y
--   --
1    1
1    2
1    3
2    3
3    3

结果应该是:

X    Y
--   --
1    1
1    2
2    3

I am using Derby.
I have a table with two columns X and Y.
I want to select column X but group by column Y.
This means I want to show only ONE X value for each row with the first Y value to it.

How can I do this?

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 

i want all y values with no duplicate

Raw Data

X    Y
--   --
1    1
1    2
1    3
2    3
3    3

The results should be:

X    Y
--   --
1    1
1    2
2    3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

衣神在巴黎 2024-09-17 15:07:05

你必须以某种方式聚合 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

You've got to aggregate x in some fashion:

SELECT   Y,
         MAX(X) AS Max_X,
         AVG(X) AS Avg_X

FROM     myTable
GROUP BY Y
ORDER BY Y

Minimum, Maximum, Average, First, Last, etc.

If you don't care which x you get, perhaps just choose the first or last:

SELECT   Y,
         First(X) AS X,
FROM     myTable
GROUP BY Y
信愁 2024-09-17 15:07:05

您必须指定您想要的 X

select
  min(X) X
from
  table
group by
  Y

You must specify which X you want.

select
  min(X) X
from
  table
group by
  Y
寻找我们的幸福 2024-09-17 15:07:05

我不熟悉 Derby,但尝试使用如下子查询:

SELECT X
FROM table
WHERE Y in (SELECT MIN(Y) FROM table)

这里 SELECT MIN(Y) FROM table 是选择 Y 的值(即您的“第一个 Y 值”,此处: Y 的最小值)。

I’m not familiar with Derby, but try a sub-query like:

SELECT X
FROM table
WHERE Y in (SELECT MIN(Y) FROM table)

Here SELECT MIN(Y) FROM table is to select the value for Y (i.e. your “first Y value”, here: the minimum of Y).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文