在另一列上与汇总的匹配列的计数
假设我有以下数据:
---- ------ ------------
| id | text | timetamp |
---- ------ ------------
| 1 | X1 | 100.7 |
---- ------ ------------
| 2 | X2 | 100.2 |
---- ------ ------------
| 3 | 3X | 101.0 |
---- ------ ------------
| 4 | Y1 | 100.2 |
---- ------ ------------
| 5 | 2Y | 101.3 |
---- ------ ------------
我想找到总出现wend.text。即每个时间戳,即结果应该是这样的:
--------- ---------
| X_count | Y_count |
--------- ---------
| 2 | 2 |
--------- ---------
因为行1+2在同一秒发生。
我想到的最好的事情是:
SELECT
SUM(IF(T.total_X_count > 0, 1, 0)) AS X_count,
SUM(IF(T.total_Y_count > 0, 1, 0)) AS Y_count
FROM
(SELECT id,
MAX(CASE WHEN table.text like "%X%" THEN 1 END) AS "total_X_count",
MAX(CASE WHEN table.text like "%Y%" THEN 1 END) AS "total_Y_count"
FROM table
GROUP BY(FLOOR(UNIX_TIMESTAMP(table.datetime)))
) AS T
;
我想知道是否有可能更有效地做到这一点。
Assuming I have the following data:
---- ------ ------------
| id | text | timetamp |
---- ------ ------------
| 1 | X1 | 100.7 |
---- ------ ------------
| 2 | X2 | 100.2 |
---- ------ ------------
| 3 | 3X | 101.0 |
---- ------ ------------
| 4 | Y1 | 100.2 |
---- ------ ------------
| 5 | 2Y | 101.3 |
---- ------ ------------
and I want to find the total appearances WHERE table.text LIKE %Y%
and WHERE table.text LIKE %X%
, but count only one per timestamp, i.e., the results should look like this:
--------- ---------
| X_count | Y_count |
--------- ---------
| 2 | 2 |
--------- ---------
because rows 1+2 happened in the same second.
The best thing I came up with was this:
SELECT
SUM(IF(T.total_X_count > 0, 1, 0)) AS X_count,
SUM(IF(T.total_Y_count > 0, 1, 0)) AS Y_count
FROM
(SELECT id,
MAX(CASE WHEN table.text like "%X%" THEN 1 END) AS "total_X_count",
MAX(CASE WHEN table.text like "%Y%" THEN 1 END) AS "total_Y_count"
FROM table
GROUP BY(FLOOR(UNIX_TIMESTAMP(table.datetime)))
) AS T
;
I'd like to know if it is possible to do it more efficiently.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论