【问题标题】:Get percentage in datatables获取数据表中的百分比
【发布时间】:2015-09-15 12:19:50
【问题描述】:

我正在使用数据表插件来显示 SQL 查询结果。我正在计算查询中的百分比,但它给了我一个错误的值。有没有办法从数据表中获取结果?

在图像中,我33(23+4+2+4) 的总数。我需要在值23 旁边获得百分比(23/33)*100。这可能吗?

SELECT AIP.TERMID,
       (select count(RAU.TERMNAME)
          FROM REPORT_API_USAGE RAU
          WHERE RAU.TERMID = AIP.TERMID AND
                RAU.VOCID = 4) as page_views,
       (select sum(count(RAU.TERMNAME))
          FROM REPORT_API_USAGE RAU
          WHERE RAU.VOCID = 4 and
                RAU.TERMID in (select AIP.TERMID
                                 from REPORT_API_PAGES AIP
                                 GROUP BY AIP.TERMID)
          group by RAU.VOCID) as page_views_sum,
       (select sum(count(AIP2.TERMID))
          from REPORT_API_PAGES AIP2
          join REPORT_API_USAGE RAU
            ON (RAU.TERMID = AIP2.TERMID AND
                RAU.VOCID = 4)
          where aip2.ctype = 'download'
          GROUP by AIP2.termid) as download_sum,
       (select sum(count(AIP2.TERMID))
          from REPORT_API_PAGES AIP2
          join REPORT_API_USAGE RAU
            ON (RAU.TERMID = AIP2.TERMID AND
                RAU.VOCID = 4)
          where aip2.ctype = 'event'
          GROUP by AIP2.termid) as event_sum,
       COUNT(case
               when aip.ctype = 'download' then 1
               else null
             end) as page_download,
       COUNT(case
               when aip.ctype = 'event' then 1
               else null
             end) as page_event
  from REPORT_API_PAGES AIP
  GROUP BY AIP.TERMID

download_sum & event_sum 错了。

这就是我显示结果的方式

<div class="percent-container"> <div class="percent-count"> <div class="percent-count-value"> <?php print $RowT->page_event; ?> </div> <div class="percent-value"><?php print round(($RowT->page_event / $RowT->event_sum) * 100); ?>% </div> </div>
<div class="percent-item"> <div class="percent" style="width: <?php print round(($RowT->page_event / $RowT->event_sum) * 100); ?>%"> </div> </div> </div>

【问题讨论】:

  • 请分享您的 SQL 查询,没有看到您的 SQL 很难提供帮助
  • SELECT (a)/(SUM()*100) WHERE a 是 23,sum() 是所有项目的总和
  • 有什么办法2从查询中得到COUNT(case when aip.ctype = 'download' then 1 else null end) as page_download,COUNT(case when aip.ctype = 'event' then 1 else null end) as page_event的总和

标签: php sql oracle datatable


【解决方案1】:
WITH data (value) AS (
    SELECT 23 FROM DUAL UNION ALL
    SELECT 4 FROM DUAL UNION ALL
    SELECT 2 FROM DUAL UNION ALL
    SELECT 4 FROM DUAL
)
SELECT
    VALUE, ROUND(RATIO_TO_REPORT(VALUE) OVER () * 100) PERCENTAGE
FROM
    data

【讨论】:

  • 请编辑更多信息。纯代码和“试试这个”的答案是discouraged,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2021-11-28
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多