【问题标题】:Retrieving the total sum of a table item from a GROUP BY query从 GROUP BY 查询中检索表项的总和
【发布时间】:2013-05-20 11:06:21
【问题描述】:

我有三张桌子

private static final String DTReasonTable = "create table tb_DTReasons(DTReasonId integer primary key autoincrement,DTReason text)";

private static final String ConfigurationTable = "create table tb_Config(ConfigId integer primary key autoincrement," +
        "RawMaterialName text,OutPut_pdt text,TotalWorkHrs real,Quantity real,ProcessStartTime real,OutputQuantity real,procesEndTime real)";

private static final String DownTimeTable = "create table tb_DownTimeTable(DT_Id integer primary key autoincrement,ConfigId integer," +
        "StartTime real,EndTime real,DTReasonId integer)";

我想创建一个如下所示的报告

谁能帮我写一个生成相应报告的程序?

  public Cursor getDtAnalysisReport()
{
    return this.data.rawQuery("select EndTime-StartTime as duration,tb_DTReasons.DTReason,count(tb_DownTimeTable.DTReasonId) from tb_DownTimeTable" +
            " inner join tb_DTReasons on tb_DownTimeTable.DTReasonId = tb_DTReasons.DTReasonId group by tb_DownTimeTable.DTReasonId ", null);

}

这是我尝试过的,但出现错误。请帮助我找到解决方案。

【问题讨论】:

  • http://sqlfiddle.com 用于将模式与结果放在一起
  • 请粘贴您想要的报告,因为屏幕截图不可见。

标签: android mysql sql sqlite


【解决方案1】:
SELECT DTReason AS 'Down Time Reason',
       SUM(EndTime - StartTime) AS 'Duration',
       SUM(EndTime - StartTime) /
       (SELECT SUM(EndTime - StartTime)
        FROM tb_DownTimeTable
       ) * 100 AS '% Total Down Time',
       COUNT(*) AS 'No of Occurrences'
FROM tb_DTReasons
JOIN tb_DownTimeTable ON tb_DTReasons.DTReasonId = tb_DownTimeTable.DTReasonId
GROUP BY tb_DTReasons.DTReasonId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2021-12-19
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多