mysql - SQL 计算 id = x 的行数以及同一表中分组的其他 max(id) 行数

标签 mysql sql count

我需要计算一个表中字段 event_id = 17 的行数,并且它们不是表中具有更高 g_event_id 且 prim_cid 值相同的任何其他记录。我的表包含电话调用事件。同一调用的所有事件共享“prim_cid”字段。如果字段 event_id = 17 我知道该调用位于 queuee 中,但一旦它应答表中的新条目(相同的 prim_cid),但会发生其他 event_id 。所以我需要计算 event_id = 17 的行,并且没有具有相同 prim_cid 的后续记录。

我的 table :

事件:

g_event_id   prim_cid   event_id   event_time
----------   --------   --------   ----------
1            1          16         2016-10-21 16:00:00
2            1          17         2016-10-21 16:00:01
3            1          18         2016-10-21 16:00:02
4            2          15         2016-10-21 16:01:01
5            2          17         2016-10-21 16:01:02
6            3          16         2016-10-21 16:02:01
7            3          17         2016-10-21 16:02:02
8            3          18         2016-10-21 16:02:38

从中我想得到结果:

1 

(因为只有 prim_cid 2 在字段 g_event_id 上没有更高的记录) 我还想在获得记录的位置进行选择:

g_event_id   prim_cid   event_id   event_time
----------   --------   --------   ----------
5            2          17         2016-10-21 16:01:02

当然是在另一个sql中选择:)

最佳答案

您想要计算“知道”event_id 17 但没有其他 g_event_id 高于 17 事件的 g_event_id 的 prim_cids。这直接翻译成 SQL:

SELECT COUNT(DISTINCT seventeens.`prim_cid`)
FROM `events` AS seventeens
  LEFT JOIN `events` AS laters ON (seventeens.`prim_cid` = laters.`prim_cid` AND laters.`g_event_id` > seventeens.`g_event_id`)
WHERE seventeens.`event_id` = 17
  AND ISNULL(laters.`prim_cid`)

为了完成第二条语句,您可以对同一语句使用以下 SELECT 子句:

SELECT DISTINCT seventeens.* 
FROM ...

关于mysql - SQL 计算 id = x 的行数以及同一表中分组的其他 max(id) 行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191162/

相关文章:

php - 显示随机 mysql 记录 - PHP

java - hibernate和mysql的Persistence.xml设置显示 "No Persistence provider for EntityManager"

mysql - mysql 的外键是否可以有一个基于列值的外键?

sql - 使用 CTE 索引 View

mysql - 全文搜索不适用于两列

mysql - MERGE 语句的语法错误

当列是特定值时mysql选择具有不同过滤器的行

Mysql查询分组名称然后划分统计然后按顺序显示?

MySQL - 计算计数?

sql - 调用多列时 Hive SQL 不同列语法错误