ios - 仅当下一行具有相同键时才对 MySQL 结果进行分组

标签 ios mysql sql

我试图模仿 Apple 的 iOS 在电话应用程序上对通话历史记录进行排序的方式。

他们对调用进行排序的方式如下:

(original list)
—————————————————————
John - (Incoming)       - 10.30 am
John - (Missing)        - 10.00 am
John - (Outgoing) (3)   - 09.00 am
John - (Outgoing)       - Wednesday

(An incoming call is done)
—————————————————————
John - (Incoming) (2)   - 10.30 am <-- this row gets grouped (2)
John - (Missing)        - 10.00 am
John - (Outgoing) (3)   - 09.00 am
John - (Outgoing)       - Wednesday

(A missed call came)
—————————————————————
John - (Missing)        - 10.35 am <-- this row gets added (but not grouped with (*))
John - (Incoming) (2)   - 10.30 am
John - (Missing)        - 10.00 am --> (*)
John - (Outgoing) (3)   - 09.00 am
John - (Outgoing)       - Wednesday

基本上,这个应用程序正在做的事情如下:

它从数据库中获取所有调用,如果两个或多个调用的类型相同(丢失、传入或传出),并且也是下一行,则它们会分组为一行,并且数字指示器显示分组的金额,否则,该行只是添加到 TableView 中,没有任何奇怪的操作。

我想做的事情是当下一行与上一行的类型相同时按类型分组。我知道如何使用代码来完成此操作,但是我想知道是否有任何方法可以通过ONLY SQL来完成此操作。

最佳答案

如果您共享一个已经创建了 DDL 语句的 fiddle sql,并且所有支持都可以用于查找最佳查询,那么这是最好的,但是假设您有一个表和 3 列,这就是我可以编写的内容。

select name, type_of_call, count(type_of_call), last(call_time) from call_history
group by name, type_of_call;

关于ios - 仅当下一行具有相同键时才对 MySQL 结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588879/

相关文章:

mysql - 即使条件不成立,也会在连接中返回结果

php - 防止从不同域 PHP 发布数据

java - 如何将不同列的值分组到一行中?

ios - Xcode 不显示崩溃/错误输出

ios - 如何为 iOS telnet 客户端创建 View ?

MySQL 从查询返回的表中选择

mysql - 按两个字段排序 - 索引

iphone - 如何以编程方式打开调出 MKAnnotationView? (iPhone, MapKit)

ios - didSelectItemAtIndexPath 未在同一屏幕上使用多个 Collection View 调用

SQL - 如何使用 sql 对一个查询的输出进行分组?