如何将 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 查询的结果输出到报表表格中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为什么说当前报表开发的工作量主要在数据源环节?又如何解决呢?

[Hive]格式化输出 Hive 查询结果到 Excel

在SQL中如何将查询结果直接导出为EXCEL表格

如何将查询结果集从主报表传递到子报表

PHP 如何将数据库中的数据输出到HTML的表格中

SQL多表多字段联合查询怎么弄?最终结果用HTML页面以表格形式显示(表格已有,类似excel)。