如何 SELECT 区分 MAX 和 return 完整的 table 字段
How to SELECT distinct with MAX and return full table fields
我的table:
id name empid t_date lesson score
1 Allen 9527 2015-02-11 15-47-56 fire 100
2 Allen 9527 2015-02-11 15-49-44 back 100
4 Allen 9527 2015-02-11 15-51-22 machine_guard 100
6 Allen 9527 2015-02-11 15-52-28 machine_guard 25
8 Allen 9527 2015-02-11 15-53-23 lockout 100
9 Allen 9527 2015-02-11 15-54-01 fire 36
10 Jeremy 9845 2015-02-12 11-08-43 back 92
11 Jeremy 9845 2015-02-12 14-06-50 back 36
12 Jeremy 9845 2015-02-12 14-25-06 machine_guard 90
13 Jeremy 9845 2015-02-12 14-43-32 machine_guard 95
我需要区分名字,课程,还想要分数的最大值
我想要的结果:
id name empid t_date lesson score
1 Allen 9527 2015-02-11 15-47-56 fire 100
2 Allen 9527 2015-02-11 15-49-44 back 100
4 Allen 9527 2015-02-11 15-51-22 machine_guard 100
8 Allen 9527 2015-02-11 15-53-23 lockout 100
10 Jeremy 9845 2015-02-12 11-08-43 back 92
13 Jeremy 9845 2015-02-12 14-43-32 machine_guard 95
我试过:
SQL:
SELECT distinct name,lesson,max(score) as scores from test
where t_date between '2015-02-11' and '2015-02-13'
group by name,lesson
name lesson scores
Allen back 100
Allen fire 100
Allen lockout 100
Allen machine_guard 100
Jeremy back 92
Jeremy machine_guard 95
我不知道如何将 t_date.. 字段添加到 table.If 的 result.The 完整字段中有相同的分数,相同的名称和课程,我想要选择早期的 t_date。
您还可以获得 t_date
的 MIN()
,因为正如我观察到的您想要的结果,您通过 [=15] 获得每个 name
组的早期日期=].见下文:
SELECT
DISTINCT name,
lesson,
MAX(score) AS scores,
MIN(t_date) AS t_date
FROM test
WHERE t_date BETWEEN '2015-02-11' AND '2015-02-13'
GROUP BY name,lesson
您可以使用以下查询来获得您想要的结果:
SELECT
MIN(id) AS id,
name,
empid,
MIN(t_date) AS t_date,
lesson,
MAX(score) AS score
FROM test
WHERE t_date BETWEEN '2015-02-11' AND '2015-02-13'
GROUP BY name,empid,lesson
我的table:
id name empid t_date lesson score
1 Allen 9527 2015-02-11 15-47-56 fire 100
2 Allen 9527 2015-02-11 15-49-44 back 100
4 Allen 9527 2015-02-11 15-51-22 machine_guard 100
6 Allen 9527 2015-02-11 15-52-28 machine_guard 25
8 Allen 9527 2015-02-11 15-53-23 lockout 100
9 Allen 9527 2015-02-11 15-54-01 fire 36
10 Jeremy 9845 2015-02-12 11-08-43 back 92
11 Jeremy 9845 2015-02-12 14-06-50 back 36
12 Jeremy 9845 2015-02-12 14-25-06 machine_guard 90
13 Jeremy 9845 2015-02-12 14-43-32 machine_guard 95
我需要区分名字,课程,还想要分数的最大值
我想要的结果:
id name empid t_date lesson score
1 Allen 9527 2015-02-11 15-47-56 fire 100
2 Allen 9527 2015-02-11 15-49-44 back 100
4 Allen 9527 2015-02-11 15-51-22 machine_guard 100
8 Allen 9527 2015-02-11 15-53-23 lockout 100
10 Jeremy 9845 2015-02-12 11-08-43 back 92
13 Jeremy 9845 2015-02-12 14-43-32 machine_guard 95
我试过: SQL:
SELECT distinct name,lesson,max(score) as scores from test
where t_date between '2015-02-11' and '2015-02-13'
group by name,lesson
name lesson scores
Allen back 100
Allen fire 100
Allen lockout 100
Allen machine_guard 100
Jeremy back 92
Jeremy machine_guard 95
我不知道如何将 t_date.. 字段添加到 table.If 的 result.The 完整字段中有相同的分数,相同的名称和课程,我想要选择早期的 t_date。
您还可以获得 t_date
的 MIN()
,因为正如我观察到的您想要的结果,您通过 [=15] 获得每个 name
组的早期日期=].见下文:
SELECT
DISTINCT name,
lesson,
MAX(score) AS scores,
MIN(t_date) AS t_date
FROM test
WHERE t_date BETWEEN '2015-02-11' AND '2015-02-13'
GROUP BY name,lesson
您可以使用以下查询来获得您想要的结果:
SELECT
MIN(id) AS id,
name,
empid,
MIN(t_date) AS t_date,
lesson,
MAX(score) AS score
FROM test
WHERE t_date BETWEEN '2015-02-11' AND '2015-02-13'
GROUP BY name,empid,lesson