我有以下查询,其结果对我来说是非常意外的:
select stato, (count(1) *100) / sum(1)
from LOG_BONIFICA
group by stato;
它为所有行返回100。应该不同吗?
count(1)
等于sum(1)
您的情况。
尝试这样的事情:
18:39:36 SYSTEM@dwal> ed
Wrote file S:\\tools\buffer.sql
1 select owner,
2 count(*) group_cnt,
3 sum(count(*)) over() total_cnt,
4 round(100*(count(*) / sum(count(*)) over ()),2) perc
5 from dba_objects
6 group by owner
7* order by 4 desc
18:39:57 SYSTEM@dwal> /
OWNER GROUP_CNT TOTAL_CNT PERC
------------------------------ ---------- ---------- ----------
SYS 31609 59064 53.52
PUBLIC 24144 59064 40.88
XDB 1660 59064 2.81
SYSTEM 597 59064 1.01
WMSYS 332 59064 .56
EXFSYS 312 59064 .53
IRKAZDATA 158 59064 .27
STRMADMIN 92 59064 .16
DBSNMP 55 59064 .09
RI 25 59064 .04
PASS 16 59064 .03
POTS 19 59064 .03
TI 11 59064 .02
STRMODS 11 59064 .02
OUTLN 10 59064 .02
APPQOSSYS 5 59064 .01
ORACLE_OCM 8 59064 .01
17 rows selected.
Elapsed: 00:00:00.16
update :甚至用ratio_to_report更简单
18:53:36 SYSTEM@dwal> ed
Wrote file S:\\tools\buffer.sql
1 select owner,
2 round(100*ratio_to_report(count(*)) over (), 2) perc
3 from dba_objects
4 group by owner
5* order by 2 desc
18:54:03 SYSTEM@dwal> /
OWNER PERC
------------------------------ ----------
SYS 53.52
PUBLIC 40.88
XDB 2.81
SYSTEM 1.01
WMSYS .56
EXFSYS .53
IRKAZDATA .27
STRMADMIN .16
DBSNMP .09
RI .04
PASS .03
POTS .03
TI .02
STRMODS .02
OUTLN .02
APPQOSSYS .01
ORACLE_OCM .01
17 rows selected.
Elapsed: 00:00:00.20
问题内容: 从PDO手册中: PDOStatement :: rowCount()返回 受相应PDOStatement对象执行的最后一个 DELETE,INSERT或UPDATE* 语句影响 的行数 。 * 如果关联的PDOStatement执行的最后一条SQL语句是 SELECT 语句,则 某些数据库可能返回该 语句 返回的行数 。但是, 并非对于所有数据库 都可以 保证 此行为 , 并且便携式
问题内容: 假设我有一个非标准化的表格,其中包含电影演员姓名和他们所去过的电影。 我要做的是找出演员去过多少部电影。但是我也想找出演员去过多少部电影。 我想我可以这样做: 但这似乎… idk …令人讨厌。 有任何想法吗? 问题答案: 对于大型集合,JOIN的性能可能优于子查询。 对于大型集合,当返回很大比例的行时,JOIN操作通常可以胜过子查询。在您的情况下,它不是相关子查询,因此MySQL不必多
问题内容: 是否有可能以某种方式获取MySQL数据库的结构,或者只是一些具有简单查询的表? 还是有另一种方法,我该怎么办? 问题答案: 我认为你所追求的是 您也可以使用 获取数据库中表的列表。
python 如何分批查询Oracle 就是比如数据库有几万数据第一次查询前100以此类推一直到查询到所有数据
问题内容: 我有一个MSSQL表存储,该存储在表中具有以下列: 有人可以帮我进行SQL查询,以产生占雇员总数(NumEmployees)30%的顶级商店(storeID)吗? 问题答案: WITH cte AS (SELECT storeid, numemployees, ( numemployees * 100 ) / SUM(numemployees) OVER (PARTITION BY 1
问题内容: 参考这个问题: 在一列中获取项目及其值的计数 我如何在单个查询中获得记录计数的百分比,如下所示: 谢谢 问题答案: 给你总数。 编辑 但是实际上,您需要对该列中的值求和。