我的目标是从我的数据库中提取所有记录,这些记录不是在月底,而是在数据中每个月存在的最后一个日期(尽管其中一些记录可能恰好是月底)。
目前,仅仅简单地获取每个月的最新日期,仅使用以下代码就需要26分钟:
SELECT Max(DATE)
FROM Accounts
GROUP BY Year(Date), Month(Date);
重点是,对于我们拥有的16M行,在temp_table中将其作为FROM语句的子查询并不是我们所期望的速度提高(目前读取整个表需要大约40分钟)。
有什么建议吗?
我想选择10个商户帐户,为每个商户帐户选择前15个交易记录,页面大小为10*50? 我有这个查询,它给了我最多的记录,其中我需要一个修复来挑选“每个商家账户id的前15个记录”,而不仅仅是前150个记录。 欢迎任何指点,建议,代码修复! SELECT * FROM (
SELECT account_id,transaction_id,ROWNUM RNUM
FROM transactions
WHERE status='P' AND ROWNUM < ( (p_page_number * p
因此,我应该创建一个基于大型数据集(33918340行)中每个组的最后一行的视图,因此性能是关键问题。例如,从营业额表中获取每个银行账户的最后一次营业额。我使用的是类似于 SELECT t1.*
FROM turnover t1 LEFT JOIN turnover t2
ON (t1.bankaccnumber = t2.bankaccnumber AND t1.id < t2.id)
WHERE t2.id IS NULL; 性能不是很好,我后来不得不添加与客户相关的附加连接等。(这只是一个例子) 有没有更好的方法(使用Microsoft SQL Server 2014)?
我已经创建了一个包含以下记录的emp表。
create table emp(
EMPNO integer,
EMPNAME varchar2(20),
SALARY number);
select * from emp;
empno empname salary
10 bill 2000
11 bill 2000
12 mark 3000
12 mark 3000
12 mark 3000
12 philip 3000
12 john 3000
13 t
ID Sum Name
a 10 Joe
a 8 Mary
b 21 Kate
b 110 Casey
b 67 Pierce
您建议为每个ID获取与最大和(按ID分组)对应的名称的最佳方法是什么。到目前为止我尝试过的是:
select ID, SUM(Sum) s, Name
from Table1
group by ID, Name
Order by SUM(Sum) DESC;
这将把记录排列为先有最高金额的组。那我就得标记那些记录而只保留那些。有窍门或指点吗?非常感谢
最后,我想得到:
a 10 Joe
b 110 Casey
我有以下查询:
SELECT Distinct Contract, Description
FROM Statement
通常每个合同都有一个描述,反之亦然。然而,合同可能有一个错误。对于应该是同一对实例的实例,这将导致两行。
这就成了问题,我正在寻找解决办法。在不匹配的情况下,我希望对每种描述的可能契约的频率进行比较,并且只选择最频繁的一种。
例如:
Contract Description
X XX
X XX
Y YY
A XX
查询将返回三
我有几个链接表,我正在尝试查找其中一个子表在一行中有3条(或一些用户设置的参数)记录的数据集,其中排序是按日期(在另一个链接表中)进行的。
Table1
ID LinkID Flag
AA1 AA 30
AA2 AA 30
AA3 AA 60
AA4 AA 30
BB1 BB 30
BB2 BB 30
BB3 BB 30
BB4 BB 40
Table2
TA1 CA 2/1/2013
TA2 CA 1/1
我试着把数据记录分成几组。
每个组大小有4个记录,最后一个组可能小于4,每个组中有行编号,每个组中有计数in。
最终的结果应该是这样
我试过这样的方法
declare @t int
set @t = (select count(*) from mytable)
declare @s int
set @s = 4
select
t.Id
,@s over (order by t.Id asc) as GroupId
,case when (row_number() over (order by t.Id asc ) %@s ) = 0 then 4
我有两个表,我需要实现一些重复处理。TableA得到了一些副本,我想删除这两个条目中的一个。但是,如果TableB中不存在这个较旧的条目,则应该在删除TableA之前将其插入TableB中。
我已经设法找到所有重复的代码,但我目前正在努力解决其余的问题。
下面是查找所有副本的代码:
SELECT
id,productnumber,
MIN(init_ts) min_init, MAX(init_ts) max_init,
COUNT(1) count
FROM
TableA
GROUP BY
id,productnumber
HAVING
COU
给定一个表:
NAME DATE_OCCURRED
a 2020-05-14 23:48.07
a 2020-05-14 23:48.07
a 2020-05-14 23:48.08
b 2020-05-14 23:48.08
b 2020-05-14 23:48.08
b 2020-05-14 23:48.08
b 2020-05-14 23:48.09
我想为每个NAME返回存在最多记录的时间;以及在该时间存在的记录数量:
NAME
我想在过去的一个月中,在每个组中有多个值的10个组中显示最高值。
我已经在路上了
SELECT
Group, MAX(Value), Date
FROM
<relevant tables>
GROUP BY
Group, Date
但这会返回组中的所有内容,我需要每个组的最高值(例如,在0007行中只有'0007‘'1002415.59’'2016-11-11' )
0007 27456.14 2016-11-07
0082 2406.30 2016-11-07
0007 33038.34
我的桌子显示如下,
|_______________|____________|_____________________|______________________|
| ENTRY POINT | NAME | DATE OF ENTRY | DATETIME OF ENTRY |
|_______________|____________|_____________________|______________________|
| CHECKIN | CHOCOTACO | 05/07/2018 | 05/07/20
所用数据库: Netezza
下面的查询抛出错误为
错误: SPU交换分区:磁盘临时工作空间是完全
(SELECT A.*,ROW_NUMBER() OVER (PARTITION BY MDLX_CASE_NB ORDER BY PAID DESC) AS RNK_NEW
FROM ANLA1.FPA_RANK_OLD A)
DISTRIBUTE ON (CLAIM_NB);
从计划文件中,我可以看到给定的表有1.7B记录,我觉得它正在处理在临时空间中抛出错误的大量记录。
如果我的理解是正确的,那么我们可以有任何替代上述查询或任何其他解决方案吗?
我正在尝试构建一个查询,该查询选择一个组名和销售额最高的CD的名称。该模式看起来类似于
组(groupName,groupCode)
cd(cdTitle,numberSold,groupCode)
我构建了这样一个查询:
SELECT mg.groupName, cd.cdTitle, MAX(cd.numberSold) as maxSold
FROM musicalGroup mg, cd cd
WHERE cd.groupCode = mg.groupCode
GROUP BY mg.groupCode
但是我收到了错误
错误:列"cd.cdtitle“必须出现在GROUP子
我有以下问题
SELECT Dept
,ID
FROM (SELECT TOP (@RowTo) ROW_NUMBER() OVER (ORDER BY Dept) AS ROWID,
Dept
,ID
FROM Department
WHERE Dept LIKE @Team + '%') as Calls
WHERE RowID >= @RowFrom AND RowID <= @RowTo
我需要
有人写了下面的伪查询:
SELECT custId, orderId, col1, col2
FROM (SELECT c.id AS custId, o.id AS orderId,
ROW_NUMBER() OVER(PARTITION BY c.id, o.id
ORDER BY d.col1, d.col2) AS RANK
FROM customers c
INNER JOIN orders o ON c.id = o.custId
INNER JOIN orderDetails d ON