标签: count

需要在 Oracle 上按日期计算记录和分组计数

我有一张像下面这样的表

   ID                created    sent    type
-----------------------------------------------------
0001463583000051783  31-JUL-12  1   270
0081289563000051788  01-AUG-12  1   270
0081289563000051792  01-AUG-12  1   270
0081289563000051791  01-AUG-12  1   270
0081289563000051806  01-AUG-12  1   270
0001421999000051824  06-AUG-12  1   270
0001421999000051826  06-AUG-12  1   270
0001464485000051828  06-AUG-12  1   270
0082162128000051862  09-AUG-12  2   278
0082162128000051861  09-AUG-12  2   278
0022409222082910259  09-AUG-12  3   278
Run Code Online (Sandbox Code Playgroud)

我想有以下输出

created     Count
---------------------
31-JUL-12   1
01-AUG-12   4
06-AUG-12   3
09-AUG-12   3
Run Code Online (Sandbox Code Playgroud)

在 Oracle 10g 上使用 SQL Developer 实现这一目标有多难?

我尝试了几个查询来生成这样一个表,最后它没有按日期对计数进行分组,当我们每天平均 5000-10000 笔交易时,它只是给我一个“1”的计数。我可能把它复杂化了。但我想要一些简单的东西,我可以在一个日期范围内每天提取交易量。

oracle-10g count oracle-sql-developer group-by

1
推荐指数
1
解决办法
5万
查看次数

如何选择具有最大和最小计数的行?

我在 SQL Server 2012 中有下表:

CREATE TABLE [MyTable] (
    [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT NEWID(),
    [MyGroup] INT NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我想输出表格的表格

    | MyGroup | Count
Max |         |
Min |         |
Run Code Online (Sandbox Code Playgroud)

例如,如果我30在MyTable的行,其中MyGroup的= 120行,其中MyGroup的= 2,和10行,其中MyGroup的= 3,然后

    | MyGroup | Count
Max | 1       | 30
Min | 3       | 10
Run Code Online (Sandbox Code Playgroud)

什么样的查询会输出这些信息?

sql-server aggregate count sql-server-2012

1
推荐指数
2
解决办法
1万
查看次数

同一列上的多个 COUNT

我有一个表 (PostgreSQL 9.6),其中包含 260 万多个与帐户标识符关联的带时间戳的行,对于任何给定的标识符,我想计算在单个查询中出现总次数以及今天的出现次数

作为参考,这与此问题中描述的表相同,但我在此处对其进行了简化以关注此特定问题:

CREATE TABLE account_test
(
  id integer NOT NULL PRIMARY KEY
);

CREATE TABLE log_test
(
  account integer NOT NULL REFERENCES account_test(id),
  event_time timestamp with time zone NOT NULL DEFAULT now()
);

CREATE INDEX account_test_idx ON log_test USING btree (account,event_time);

INSERT INTO account_test VALUES (1);
INSERT INTO account_test VALUES (2);

INSERT INTO log_test VALUES (1,'2018-01-01');
INSERT INTO log_test VALUES (1,'2018-01-02');
INSERT INTO log_test VALUES (1,'2018-01-03');
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

postgresql count postgresql-9.6

1
推荐指数
1
解决办法
7602
查看次数

SQL Server COUNT() 似乎忽略了 WHERE

我正在尝试设置一个 SQL Server 查询,该查询列出在会议活动期间注册参观的人数,然后显示总和。这是我即将接近的 SQL 代码,但它忽略了总计(但不是单个总计)的 WHERE 子句:

SELECT     SiteTour, COUNT(SiteTour) AS count
FROM       tblConference
WHERE      (RegistrationType NOT LIKE 'cancellation')
GROUP BY   SiteTour
UNION ALL
SELECT     'TOTAL' AS SiteTour, COUNT(SiteTour) AS Expr1
FROM       tblConference AS tblConference_1
Run Code Online (Sandbox Code Playgroud)

这是它正在生产的东西:

         0
Tour1   22
Tour2   30
Tour3   30
----------
TOTAL   83
Run Code Online (Sandbox Code Playgroud)

(Tour1 计数 22 是正确的,因为有一个 RegistrationType 取消。但是,83 的总数应该是 82。)

另外,我得到了一个初始行,我猜是基于对 NULL 的计数,显示为 0。有什么方法可以防止这种情况发生?

请帮我纠正这个问题。谢谢你。

sql-server count where

1
推荐指数
2
解决办法
1123
查看次数

计算每个 DISTINCT 的所有行

如何计算 WHERE 语句的所有行:

SELECT DISTINCT column1 FROM table COUNT WHERE date::text LIKE '%2014%';
Run Code Online (Sandbox Code Playgroud)

我的输出:

column1
=======
info1
info2
info3
Run Code Online (Sandbox Code Playgroud)

期望输出:

column1|number_of_rows
=====================
info1  | 2000
info2  | 1500
info3  | 1000
Run Code Online (Sandbox Code Playgroud)

你能支持我吗 如何改进它?

提前致谢。

postgresql query count distinct

1
推荐指数
1
解决办法
634
查看次数

根据状态分组,然后根据其类别ID统计其产品和总数

我有一个包含产品 ID、类别 ID 和产品状态的表格。

+---------+-------------+-------------+
|   id    |   cat_id    |   status    |
+---------+-------------+-------------+
|    1    |     1       |      1      |
|    2    |     1       |      1      |
|    3    |     2       |      1      |
|    4    |     2       |      0      |
|    5    |     1       |      0      |
|    6    |     2       |      0      |
+---------+-------------+-------------+
Run Code Online (Sandbox Code Playgroud)

如何根据其状态进行分组,然后根据其类别 ID 计算其产品和总数?我期待这样:

+---------+-------------+-------------+-----------+
|  cat_id |  published  | unpublished |   totals  |
+---------+-------------+-------------+-----------+
|    1    |     2       |      1      |     3     |
| …
Run Code Online (Sandbox Code Playgroud)

mysql count select distinct

0
推荐指数
1
解决办法
5263
查看次数

按日期计数的条目给出了错误的结果

我通过以下查询得到了一些奇怪的结果:

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and  `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud)

结果是:24446

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
Run Code Online (Sandbox Code Playgroud)

结果是:33098

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and `StockUpdated` <= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)

结果是:33098

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)

结果是:0

我的问题是为什么下面的查询不完美?

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and  `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud)

mysql count datetime

0
推荐指数
1
解决办法
88
查看次数

如何在同一字段上使用不同的 where 子句获得不同的计数?

如何在单个语句中获得具有不同条件的DISTINCT行,如果计数为零,则结果为零?COUNTSELECT

我尝试了以下查询:

SELECT DISTINCT
    A.DeviceFilter,
    (SELECT count(*) FROM DeviceLicense AS B WHERE A.DeviceFilter = B.DeviceFilter AND b.OrganizationId = 1001) 
FROM
    DeviceLicense AS A
GROUP BY
    A.DeviceFilter
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

sql-server count distinct

0
推荐指数
1
解决办法
5682
查看次数

如何从庞大的 postgres 数据库中查询结果?

我正在尝试查询 125GB Postgres 数据库中的几个表。我发现很难快速返回结果!

即使找到一列的唯一行也需要 10 多分钟。我使用命令行或 PHPMyAdmin 之类的工具来触发查询,等待时间保持不变。

例如:

SELECT COUNT (DISTINCT column_name) FROM table_name;
Run Code Online (Sandbox Code Playgroud)

我担心如果在这些表上使用连接操作,这个等待时间会显着增加并且会更加痛苦。

任何人都可以提出什么可能是快速恢复统计数据的可能解决方案?

postgresql performance count distinct postgresql-performance

0
推荐指数
1
解决办法
56
查看次数

如何以高性能且准确的方式增加主表列中的值与详细信息表中的记录数?

我使用的是 SQL Server 2008 及以上版本。

我有以下两个表:

MasterTable
MId
DetailsCount DEFAULT 0

DetailsTable
DId
MId
Run Code Online (Sandbox Code Playgroud)

在 中,我将匹配的MasterTable.DetailsCount记录数存储在 中。DetailsTableMId

首先将记录插入到主表中,然后将给定 MId 的数千条记录插入到详细信息表中。这发生在多个线程上。每个线程都有自己的SqlConnection.
详细信息表中的总记录数为数百万,并且还在不断增加。

DetailsTable.MId列上添加非聚集索引。无法添加聚集索引。

我尝试过两种维护DetailsCount专栏的方法:

  1. 扫描详细信息表以获取计数
    插入详细信息表后,更新DetailsCount使用查询:
UPDATE MasterTable
SET DetailsCount = (SELECT COUNT(*) FROM DetailsTable WHERE MId = ?)
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)

由于详细信息表中有数百万条记录,这种方法的性能不高,因为每次在其中添加新记录时我都需要扫描详细信息表(以获取计数)。即使使用非聚集索引,它的性能也不佳。如果我们简单地评论该列的更新,我们会看到性能的显着提高。

  1. 主表中的增量计数
    在详细信息表中插入后,更新DetailsCountusing 查询:
UPDATE MasterTable
SET DetailsCount = DetailsCount + 1
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)

这种方式更好,因为我不需要访问详细信息表。
但是,详细信息表中的插入发生在多个线程上。每个线程使用不同的SqlConnection实例。
这就是为什么DetailsCount经常会更新错误的值。

我查看了 …

sql-server-2008 sql-server count update query-performance

-1
推荐指数
1
解决办法
801
查看次数