我有一张像下面这样的表
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”的计数。我可能把它复杂化了。但我想要一些简单的东西,我可以在一个日期范围内每天提取交易量。
我在 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的= 1,20行,其中MyGroup的= 2,和10行,其中MyGroup的= 3,然后
| MyGroup | Count
Max | 1 | 30
Min | 3 | 10
Run Code Online (Sandbox Code Playgroud)
什么样的查询会输出这些信息?
我有一个表 (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) 我正在尝试设置一个 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。有什么方法可以防止这种情况发生?
请帮我纠正这个问题。谢谢你。
如何计算 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)
你能支持我吗 如何改进它?
提前致谢。
我有一个包含产品 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) 我通过以下查询得到了一些奇怪的结果:
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) 如何在单个语句中获得具有不同条件的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)
我正在尝试查询 125GB Postgres 数据库中的几个表。我发现很难快速返回结果!
即使找到一列的唯一行也需要 10 多分钟。我使用命令行或 PHPMyAdmin 之类的工具来触发查询,等待时间保持不变。
例如:
SELECT COUNT (DISTINCT column_name) FROM table_name;
Run Code Online (Sandbox Code Playgroud)
我担心如果在这些表上使用连接操作,这个等待时间会显着增加并且会更加痛苦。
任何人都可以提出什么可能是快速恢复统计数据的可能解决方案?
postgresql performance count distinct postgresql-performance
我使用的是 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专栏的方法:
DetailsCount使用查询:UPDATE MasterTable
SET DetailsCount = (SELECT COUNT(*) FROM DetailsTable WHERE MId = ?)
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)
由于详细信息表中有数百万条记录,这种方法的性能不高,因为每次在其中添加新记录时我都需要扫描详细信息表(以获取计数)。即使使用非聚集索引,它的性能也不佳。如果我们简单地评论该列的更新,我们会看到性能的显着提高。
DetailsCountusing 查询:UPDATE MasterTable
SET DetailsCount = DetailsCount + 1
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)
这种方式更好,因为我不需要访问详细信息表。
但是,详细信息表中的插入发生在多个线程上。每个线程使用不同的SqlConnection实例。
这就是为什么DetailsCount经常会更新错误的值。
我查看了 …
count ×10
distinct ×4
sql-server ×4
postgresql ×3
mysql ×2
aggregate ×1
datetime ×1
group-by ×1
oracle-10g ×1
performance ×1
query ×1
select ×1
update ×1
where ×1