如何将 SQL 查询的结果输出到报表表格中? [复制]
Posted
技术标签:
【中文标题】如何将 SQL 查询的结果输出到报表表格中? [复制]【英文标题】:How to output the results of a SQL query into a report form table? [duplicate] 【发布时间】:2018-07-25 22:30:40 【问题描述】:我有一个下表字段:
Invitations (user_id, type, created_at, completed_at)
我目前可以通过运行以下查询并手动计算获得上周的邀请会话率。
SELECT *
FROM invitations
WHERE created_at >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND created_at < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY
AND user_id != 1
AND type = 'email'
ORDER BY completed_at, created_at
是否可以使用 SQL 输出更多报告...返回的内容:
LAST WEEK | Total Invitations | Invitations Completed | % Conversion
| 100 | 50 | 50%
TWO WEEKS | Total Invitations | Invitations Completed | % Conversion
| 100 | 60 | 60%
这样的事情可以用 SQL 实现吗?还是我需要用应用程序逻辑来创建?
【问题讨论】:
【参考方案1】:也许您想使用count()
进行聚合并执行UNION ALL
。
SELECT 'LAST WEEK' `Period`,
count(created_at) `Total Invitations`,
count(completed_at) `Invitations completed`,
concat(count(completed_at) / count(created_at) * 100, '%') `% Conversion`
FROM invitations
WHERE created_at >= curdate() - INTERVAL dayofweek(curdate()) + 6 DAY
AND created_at < curdate() - INTERVAL dayofweek(curdate()) - 1 DAY
AND user_id <> 1
AND type = 'email'
UNION ALL
SELECT 'TWO WEEKS' `Period`,
count(created_at) `Total Invitations`,
count(completed_at) `Invitations completed`,
concat(count(completed_at) / count(created_at) * 100, '%') `% Conversion`
FROM invitations
WHERE created_at >= curdate() - INTERVAL dayofweek(curdate()) + 13 DAY
AND created_at < curdate() - INTERVAL dayofweek(curdate()) - 1 DAY
AND user_id <> 1
AND type = 'email';
count(completed_at)
只计算行数,其中completed_at
不为空。我假设 completed_at
为 null 当且仅当邀请未完成时。 count(created_at)
模拟工作。但是我假设该列中没有空值(如果是,这些行将与WHERE
子句中的条件不匹配,因此它们甚至不是计数的候选对象)。 UNION ALL
只是将两个结果集合并(不消除重复项,因为至少 Period
不同)。
【讨论】:
太棒了 - 谢谢以上是关于如何将 SQL 查询的结果输出到报表表格中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章