0

任何人都可以帮助我进行 MySql 数据库查询:

我有一张包含以下数据的表格:

work_date   ticket no   category
------------------------------------
7/15/2013   111           a
7/15/2013   222           b
7/15/2013   333           c
7/16/2013   111           a
7/16/2013   555           e
7/16/2013   333           f
7/17/2013   111           H

我需要帮助编写一个查询,该查询将读取所有表数据,然后创建 2 列一票号,第二列作为类别。在票列下,它将显示所有不同票号的计数,类别下的值应该是分配给该票的最后一个类别。

我正在使用以下查询

SELECT category, count(distinct(ticket_no)) 
FROM master 
group by category 
order by 2 DESC`

出现在 2 个或更多类别中的票被多次计算,我希望它只被计算一次,并且也是最新的

预期结果:

Ticket No   Category
--------------------
111           H 
222           b 
333           f
555           e
4

4 回答 4

0
select * from
(select ticket_no,category from master order by work_date desc) abc
group by ticket_no;

小提琴

于 2013-07-29T05:08:47.643 回答
0

我没有收到您的示例查询。它是按category而不是分组ticket,但样本数据是按ticket

无论如何,我认为这可以满足您的要求:

select ticket,
       substring_index(group_concat(category order by work_date desc), ',', 1)
from master m
group by ticket;
于 2013-07-29T03:46:59.877 回答
0

您可以使用以下 SQL 查询:

SELECT DISTINCT(ticket_no), category FROM table_name SORT BY DESC;
于 2013-07-29T03:48:52.337 回答
-1
SELECT *
 FROM distinct t1
 WHERE NOT EXISTS (
   SELECT *
   FROM distinct t2
   WHERE t2.ticket_no= t1.ticket_no
     AND t2.work_date   > t1.work_date   
   ); 

这里 work_date 应该是格式化的时间戳

于 2015-06-30T11:21:13.433 回答