我的数据库中有两个表:
ticket
- id
- customer_id
message
- id
- ticket_id
- supporter_id如果消息来自客户,则supporter_id字段为空,否则它包含(正如您所期望的)支持者id。
我现在想知道有多少张票只有一条消息,且supporter_id字段不为空(即,我正在查找仅使用来自支持者的一条消息或“一次性修复”百分比解决的票)。我还想知道每个支持者的“一次性修复”的百分比是多少。
我想我需要使用joins或其他东西,但我有点迷失在其中。有人知道我该怎么解决这个问题吗?欢迎所有提示!
发布于 2014-02-11 21:38:01
为此,您可以使用子查询。如果我没理解错的话,你想:
SELECT * FROM ticket
WHERE (
SELECT COUNT(*) FROM message WHERE ticket_id = ticket.id AND supporter_id IS NOT NULL
) = 1这将获取仅存在具有非空supported_id的单个消息的所有票证。
使用此工具,您应该能够计算出百分比。
发布于 2014-02-11 21:42:50
显而易见的解决方案是:
SELECT COUNT(ticket_id)
FROM (
SELECT ticket_id
FROM message
WHERE supporter_id is NOT NULL
GROUP BY ticket_id
HAVING COUNT(*)=1
);关于性能调优的常见说法适用于--你需要查看所有数据吗?这真的能解决你的问题吗?
https://stackoverflow.com/questions/21703377
复制相似问题