SQL中具有最大值的分组依据
我正在尝试使用group by函数检索max(CRN),以检索CRN之外的重复记录,但它不起作用: 以下是我的选择声明:SQL中具有最大值的分组依据,sql,greatest-n-per-group,Sql,Greatest N Per Group,我正在尝试使用group by函数检索max(CRN),以检索CRN之外的重复记录,但它不起作用: 以下是我的选择声明: select max(CRN), TERM, SUBJECT, COURSE, SCH, R_KEY, R_PERC from database group by TERM, SUBJECT, COURSE, SCH, R_KEY, R_PERC 下面是我的输入文件: CRN TERM SUBJECT COURSE SCH
select max(CRN), TERM, SUBJECT, COURSE, SCH, R_KEY, R_PERC
from database
group by TERM, SUBJECT, COURSE, SCH, R_KEY, R_PERC
下面是我的输入文件:
CRN TERM SUBJECT COURSE SCH R_KEY R_PERC
10607 10 DGRG 230 K 36714 37
10607 10 DGRG 230 K 36715 38
11658 10 MATH 101 E 213162 100
11658 10 MATH 101 L 182471 100
12811 10 MHRM 310 L 32951 50
12811 10 MHRM 310 L 130923 50
12879 10 MHRM 310 L 32738 50
12879 10 MHRM 310 L 32951 50
12912 10 MHRM 310 L 120641 50
12912 10 MHRM 310 L 121008 50
我期望以下输出与(以上输入)相同,因为我有不同的“R_PERC”或“R_键”:
但我的实际输出仅为CRN 12811的一条记录,如下所示,请注意,如果我们将上述输入文件包含在更大的文件记录中,则所有CRN的输出将类似(仅指一条记录):
CRN TERM SUBJECT COURSE SCH R_KEY R_PERC
10607 10 DGRG 230 K 36714 37
10607 10 DGRG 230 K 36715 38
11658 10 MATH 101 E 213162 100
11658 10 MATH 101 L 182471 100
12811 10 MHRM 310 L 32951 50
12879 10 MHRM 310 L 32738 50
12879 10 MHRM 310 L 32951 50
12912 10 MHRM 310 L 120641 50
12912 10 MHRM 310 L 121008 50
包括计数:
+----------+----------+------+---------+--------+------+--------+--------+
| max(CRN) | count(*) | TERM | SUBJECT | COURSE | SCH | R_KEY | R_PERC |
+----------+----------+------+---------+--------+------+--------+--------+
| 10607 | 1 | 10 | DGRG | 230 | K | 36714 | 37 |
| 10607 | 1 | 10 | DGRG | 230 | K | 36715 | 38 |
| 11658 | 1 | 10 | MATH | 101 | E | 213162 | 100 |
| 11658 | 1 | 10 | MATH | 101 | L | 182471 | 100 |
| 12879 | 1 | 10 | MHRM | 310 | L | 32738 | 50 |
| 12879 | 2 | 10 | MHRM | 310 | L | 32951 | 50 | <-- your 12811 record is included in here, because both records have the same R_KEY
| 12912 | 1 | 10 | MHRM | 310 | L | 120641 | 50 |
| 12912 | 1 | 10 | MHRM | 310 | L | 121008 | 50 |
| 12811 | 1 | 10 | MHRM | 310 | L | 130923 | 50 |
+----------+----------+------+---------+--------+------+--------+--------+
你用的是什么产品?博士后?神谕“SQL”只是一种查询语言,而不是特定数据库产品的名称。。。非常令人困惑。这是Oracle DatasetHanks,但为什么Oracle数据库或MySQL数据库会做出这样的反应;意味着删除一些不重复的记录??它们不会被删除。看看我包括的第二张表。它们被分组并显示为一行,因为您尚未将CRN包括在分组依据中。12879大于12811,因此在使用max()函数时会显示该值。行为完全正确。但为什么以下记录消失了:12811 10 MHRM 310 L 130923 50而不是12811 10 MHRM 310 L 32951 50“消失”是什么意思?记录
12811 10 MHRM 310 L 130923 50
就在那里,记录12811 10 MHRM 310 L 32951 50
就像我在组中所说的12879 10 MHRM 310 L 32951 50
,从计数列可以看出。
+----------+----------+------+---------+--------+------+--------+--------+
| max(CRN) | count(*) | TERM | SUBJECT | COURSE | SCH | R_KEY | R_PERC |
+----------+----------+------+---------+--------+------+--------+--------+
| 10607 | 1 | 10 | DGRG | 230 | K | 36714 | 37 |
| 10607 | 1 | 10 | DGRG | 230 | K | 36715 | 38 |
| 11658 | 1 | 10 | MATH | 101 | E | 213162 | 100 |
| 11658 | 1 | 10 | MATH | 101 | L | 182471 | 100 |
| 12879 | 1 | 10 | MHRM | 310 | L | 32738 | 50 |
| 12879 | 2 | 10 | MHRM | 310 | L | 32951 | 50 | <-- your 12811 record is included in here, because both records have the same R_KEY
| 12912 | 1 | 10 | MHRM | 310 | L | 120641 | 50 |
| 12912 | 1 | 10 | MHRM | 310 | L | 121008 | 50 |
| 12811 | 1 | 10 | MHRM | 310 | L | 130923 | 50 |
+----------+----------+------+---------+--------+------+--------+--------+
+-------+------+---------+--------+------+-------+--------+
| CRN | TERM | SUBJECT | COURSE | SCH | R_KEY | R_PERC |
+-------+------+---------+--------+------+-------+--------+
| 12811 | 10 | MHRM | 310 | L | 32951 | 50 |
| 12879 | 10 | MHRM | 310 | L | 32951 | 50 |
+-------+------+---------+--------+------+-------+--------+