Questions tagged «count»

COUNT:用于计数行数的聚合SQL函数。


1
在同一查询中具有不同条件的Postgres计数
编辑 Postgres 9.3 我正在处理具有以下架构的报告:http : //sqlfiddle.com/#!15/fd104/2 当前查询工作正常,如下所示: 基本上它是一个3表内部联接。我没有进行此查询,但是留下查询的开发人员想修改查询。如您所见,TotalApplication只计算基于的总申请量a.agent_id。您可以totalapplication在结果中看到该列。我要删除的是并将其更改totalapplication为新的两列。我想添加completedsurvey和partitalsurvey列。所以基本上这部分将成为 SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey FROM forms a WHERE a.created_at >= '2015-08-01' AND a.created_at <= '2015-08-31' AND disposition = 'Completed Survey' GROUP BY a.agent_id 我刚刚添加了,AND disposition = 'Completed Survey'但是我需要另一列partialsurvey具有相同查询的列,completedsurvey唯一的区别是 AND disposition = 'Partial Survey' 和 COUNT(a.id) as PartialSurvey 但是我不知道将查询放在哪里或查询的样子,所以最终输出包含这些列 agent_id, …

2
提高大型PostgresSQL表中COUNT / GROUP-BY的性能?
我正在运行PostgresSQL 9.2,并具有12列的关系,大约有6,700,000行。它包含3D空间中的节点,每个节点都引用一个用户(创建它的用户)。为了查询哪个用户创建了多少个节点,我执行以下操作(添加explain analyze以获得更多信息): EXPLAIN ANALYZE SELECT user_id, count(user_id) FROM treenode WHERE project_id=1 GROUP BY user_id; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- HashAggregate (cost=253668.70..253669.07 rows=37 width=8) (actual time=1747.620..1747.623 rows=38 loops=1) -> Seq Scan on treenode (cost=0.00..220278.79 rows=6677983 width=8) (actual time=0.019..886.803 rows=6677983 loops=1) Filter: (project_id = 1) Total runtime: 1747.653 ms 如您所见,这大约需要1.7秒。考虑到数据量,这还算不错,但是我想知道是否可以改进。我试图在用户列上添加一个BTree索引,但这没有任何帮助。 您还有其他建议吗? 为了完整起见,这是完整的表定义及其所有索引(没有外键约束,引用和触发器): Column …

3
如果一列存在,如何选择特定行;如果一列不存在,如何选择所有行
我正在编写一个脚本,该脚本获取一些表的行数,但是对于某些表,我只想获取设置了标志(在本例中为active = 1)的行数。有没有一种方法可以在一个查询中做到这一点? 例如: 表中users有一个称为活动的列 表clients没有称为活动的列 我想获得其中active = 1的用户数,而只是获得客户数。 在您说“只是硬编码”之前,这是一个查询,该查询正在python脚本内进行,该python脚本可以在许多不同的数据库上运行,并且我无法知道我的脚本将选择哪些表,以及它们是否具有名为的列active。我宁愿只有一个查询来完成所有操作,而不是两个单独的查询,并依靠mysql引发错误,所以我知道要使用另一个查询。
23 mysql  select  count 

1
MySQL为表中的每个记录计数来自另一个表的行
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 我正在尝试计算最后一行,但是它计算所有结果并返回一个结果 我收到类似 因为有多个记录,因为K1052280的出勤ID中有两个条目,我想对它们进行计数并返回编号。就像是
21 mysql  select  count 

6
计算连续两列或多列超过某个值的位置[篮球,双倍双倍,三倍双倍]
我玩篮球游戏,它允许将其统计信息输出为数据库文件,因此可以从中计算出在游戏中未实现的统计信息。到目前为止,我可以很轻松地计算出我想要的统计数据,但是现在我遇到了一个问题:从一个赛季的比赛统计数据中计算出一个球员本赛季创造的双打和/或双打的数量。 双精度双精度和三重精度双精度的定义如下: 双双: 双打被定义为一种表现,其中玩家在游戏中累积五个统计类别中的两个统计的两位数总数(点,篮板,助攻,抢断和盖帽)。 三双: 三重双打被定义为一种表现,其中玩家在游戏中五个统计类别中的三个统计点(得分,篮板,助攻,抢断和盖帽)中累计两位数。 四重双(为清楚起见添加) 四重双打是指在游戏中,玩家在五个统计类别中的四个统计类别中(得分,篮板,助攻,抢断和盖帽)累计两位数的表现。 “ PlayerGameStats”表存储了玩家玩的每个游戏的统计信息,外观如下: CREATE TABLE PlayerGameStats AS SELECT * FROM ( VALUES ( 1, 1, 1, 'Nuggets', 'Cavaliers', 6, 8, 2, 2, 0 ), ( 2, 1, 2, 'Nuggets', 'Clippers', 15, 7, 0, 1, 3 ), ( 3, 1, 6, 'Nuggets', 'Trailblazers', 11, …

3
为什么InnoDB不存储行数?
每个人都知道,在使用InnoDB作为引擎的表中,诸如此类SELECT COUNT(*) FROM mytable的查询非常不精确且非常慢,尤其是当表变大并且在执行查询时不断插入/删除行时。 据我了解,InnoDB不会将行数存储在内部变量中,这就是导致此问题的原因。 我的问题是:为什么会这样?存储这样的信息会很难吗?在很多情况下了解这是重要的信息。我看到是否会实现这种内部计数的唯一困难是涉及事务时:如果事务未提交,您是否计算它插入的行? PS:我不是数据库专家,我只是将MySQL作为简单爱好的人。因此,如果我只是问一些愚蠢的问题,请不要过于批评:D。
19 mysql  innodb  count 

3
PostgreSQL使用count()确定百分比(广播问题)
我正在尝试运行以下查询,以提供patients表中具有该refinst列值的行的百分比。我一直得到0的结果。 select (count (refinst) / (select count(*) from patients) * 100) as "Formula" from patients; 该表有15556行,并select count(refinst) from patients告诉我其中的1446 行在该refinst列中有一个值。我想从查询中获得的响应为30.62(1446/15556*100=30.62XXXXX,四舍五入为两位小数)。 我很确定它与计数结果的数据类型有关(我假设的是整数)。如果我将整数除以整数并且结果小于0,则将其截断为0正确吗?如果是这样,有人可以告诉我如何将计数结果转换为2位小数的数字,以便结果也将四舍五入到2位小数吗? 我敢肯定,与多个count语句相比,有一种更好的方法来编写此代码。我正在寻找一种更处理器有效的方法来特别编写此查询。
19 postgresql  count  cast 

5
MySQL IS NULL / IS NOT NULL行为不正确?
请查看此表: mysql> desc s_p; +-------------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | s_pid | int(10) unsigned | YES | MUL | NULL | | | sm_id | int(10) …
18 mysql  count 

2
MySQL-使用count(*)和information_schema.tables进行行计数之间的区别
我想要一种快速的方法来计算表中有几百万行的行数。我在Stack Overflow上找到了“ MySQL:最快的行数计数方法 ”一文,它看起来可以解决我的问题。Bayuah提供了以下答案: SELECT table_rows "Rows Count" FROM information_schema.tables WHERE table_name="Table_Name" AND table_schema="Database_Name"; 我喜欢它,因为它看起来像查找而不是扫描,因此它应该很快,但是我决定对它进行测试 SELECT COUNT(*) FROM table 看看有多少性能差异。 不幸的是,我得到了如下所示的不同答案: 题 为什么答案相差约200万行?我猜执行全表扫描的查询是更准确的数字,但是有没有一种方法可以不必运行此慢查询就可以获取正确的数字? 我跑了ANALYZE TABLE data_302,完成了0.05秒。当我再次运行查询时,我现在得到了34384599行的更接近的结果,但是它仍然select count(*)与34906061行的数字不同。分析表是否立即返回并在后台处理?我觉得值得一提的是,这是一个测试数据库,目前尚未写入。 没有人会在乎是否只是告诉某人一个表有多大的情况,但是我想将行数传递给一些代码,该代码将使用该数字来创建一个“大小相等”的异步查询来查询数据库并行地,类似于Alexander Rubin通过并行查询执行来提高慢查询性能中所示的方法。照原样,我将获得最高的ID,SELECT id from table_name order by id DESC limit 1并希望我的表不要过于分散。
16 mysql  mysql-5.6  count 

1
为什么在我索引列时此sqlite查询要慢得多?
我有一个带两个表的sqlite数据库,每个表有50,000行,其中包含(假)人的名字。我构建了一个简单的查询,以找出两个表共有的名称(给定名称,中间名缩写,姓氏): select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial; 当除了主键之外没有索引(与该查询无关)时,它将快速运行: [james@marlon Downloads] $ time sqlite3 generic_data_no_indexes.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;" 131 real 0m0.115s user 0m0.111s sys 0m0.004s 但是,如果我将索引添加到每个表的三列中(总共六个索引): CREATE INDEX `idx_uk_givenname` ON `fakenames_uk` (`givenname` ) //etc. …

2
为什么在解释知道答案时count(*)慢?
这个查询:select count(*) from planner_event需要很长时间才能运行-这么长的时间,我放弃并杀死了它。但是,当我运行时explain select count(*) from planner_event,我可以在输出中看到一列带有行数(14m)的列。 为什么解释可以立即获得行数,但是count(*)需要很长时间才能运行?
14 mysql  count  explain 

1
sys.partition.rows列的准确性如何?
系统视图sys.partitions具有“行”列,该列是给定分区中的总行数。对于未分区的表(或者只有一个分区,这取决于您的外观),此列给出了表中的行数。 我很好奇此列的准确性,以及是否可以使用它代替SELECT COUNT(1) FROM TableName。我做过一些实验,创建一个表并添加几千行,删除几百行,再添加几千个,等等,而且这种情况一直没有解决。但是,我有一张表,约有7亿行和几个索引。sys.partitions聚簇索引的行再次停滞不前,但是其他索引显示出一些细微的变化(+ -20k)。 有谁知道该行的计算方式以及它的准确性是否与所显示的相同?


3
如何在一个查询中进行多个计数?
我用类似的查询来计数记录 SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%' SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%' SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%' 对于每个计数,mysql需要遍历整个表,如果表很长且有许多查询,这将是一个大问题。 我想知道是否有一种方法可以在一个查询中进行所有计数。在这种情况下,当mysql遍历每一行时,它将处理所有计数,而无需一遍又一遍地扫描整个表。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.