我有以下格式的数据
Id Code Date Amount Type
101 B25 5/4/2020 $500 C
101 A15 5/5/2020 $100 D
101 D15 5/5/2020 $200 D
102 B35 6/2/2020 $400 C
102 A15 6/2/2020 $50 D
我需要以下几点
Id Code D
基本上,我只想通过一种简单的方法在表中找到最近的日期,将其保存为变量,并在相同的查询中重用该变量。
现在我就是这样做的:
with recent_date as (
select max(date)
from mytable
)
select *
from mytable
where date = (select * from recent_date)
(对于这个简单的例子,变量是过火的,但在我的实际用例中,我在同一个查询中多次重复使用最近的日期。)
但这感觉很麻烦。将最近的日期保存到一个变量,而不是一个表,并且必须从它中进行选择,这将更加简洁。
在伪代码中,这样的东西会很好:
$r
我想使用for-循环返回表中第n大的薪水,但语法仍然有问题。请帮帮忙。
create function get_nth_max(n integer)
returns real
as
$$
declare
nth_max real = max(salary) from company;
pay real;
begin
for pay in select salary from company
order by salary = desc limit n
loop
if pay.salary < nth_max then
nth_max =
我有一个表,其中每一行都对应着一个对象在特定日期的价格。对于同一对象,不同的行可以有不同日期的价格(它们将具有相同的object_ids字段)我尝试在单个查询中获取包含每个对象的最新价格的行,如下所示:
SELECT
MAX(price1) KEEP (DENSE_RANK FIRST
ORDER BY day DESC),
MAX(price2) KEEP (DENSE_RANK FIRST
ORDER BY day DESC)
FROM historic_prices H3
GROUP BY object_ids;
不幸的是,当最新的价格为NULL,并且它只返回NULL时,这不起作
我发现,虽然nulls_last=True工作,但nulls_last=False不工作。下面的例子是Django shell。
In [10]: [x.date for x in Model.objects.all().order_by(F('date').asc(nulls_last=True))]
Out[10]:
[
我有一个名为的表,它通过product_id列从表产品中引用。我想要一个查询,选择由product_id组合的价格与最大的最终日期,并通过一个选择得到的start_date值与id的价格分组。
我尝试使用下面的查询,但是我得到了一个错误的开始日期值。由于结果子查询返回多行,所以很奇怪,即使我在where子句上使用了where id。因为我对查询设置了限制,但这是错误的。
select prices.produto_id, prices.id,
MAX(CASE WHEN prices.finish_date IS NULL THEN COALESCE(prices.finish_date,&
我有一个名为VIEWS的表,其中包含Id、日期、月份、视频名称、浏览器名称……但我只对Id、日期和月份感兴趣。
ID可以重复,因为用户(ID)可以在多个月内观看多天的视频。
这是对最小日期和最大日期的查询。
SELECT ID, CONCAT(MIN(DAY), '/', MIN(MONTH)) AS MIN_DATE,
CONCAT(MAX(DAY), '/', MAX(MONTH)) AS MAX_DATE,
FROM Views
GROUP BY ID
我想用insert into将这个带有两列(MIN_DATE和MAX_DATE)的select插入到
我正在使用postgresql,我对它不熟悉。这段代码可以工作,但我想知道是否可以用更直接的方式编写它。在这里,我在子查询中加入bar来连接bar。我希望有一些像select * from bar group by baz using max(z)这样简单的东西
select *
from foo f
join bar b on(f.baz=b.baz AND b.z in (select max(z) from bar group by baz))
where uid1 = 120
我想根据最新的"APP_START_DT“返回每个人1行。
我希望确保它查看MAX(APP_START_DT),然后跟踪此人在该行上的所有日期,而忽略该行上的其他行和日期。
This is what I have tried:
select distinct ap1.ID,
MAX(ap1.APP_START_DT) over (PARTITION by ap1.ID) APP_START_DT,
ap1.APP_SUBMIT_DT
from table1 ap1
where ap1.ID in ('444','555');
Getting 2 row
我有一个表,其中存储了带有Created_On日期和Last_Updated_On日期的记录。每条新记录都将使用Created_On写入,后续的每次更新都会使用相同的Created_On写入新行,但会写入更新后的Last_Updated_On。
我正在尝试设计一个查询来返回每个查询的最新行。我得到的内容类似于:
SELECT
t1.[id] as id,
t1.[Store_Number] as storeNumber,
t1.[Date_Of_Inventory] as dateOfInventory,
t1.[Created_On] as createdOn,
我有一个包含列的表:FILING_ID、DATE和BLAH
我正在尝试编写一个查询,为每个FILING_ID返回带有最后三个日期的行。如果表是:
FILING_ID DATE
aksjdfj 2/1/2006
b 2/1/2006
b 3/1/2006
b 4/1/2006
b 5/1/2006
我想:
FILING_ID DATE
aksjdfj 2/1/2006
b 3/1/2006
返回a.id = 366预期的29个结果的SQL查询
select a.name, c.name, MAX(B.date), MAX(b.renew_date) as MAXDATE
from boson_course c
inner join boson_coursedetail b on (c.id = b.course_id)
inner join boson_coursedetail_attendance d on (d.coursedetail_id = b.id)
inner join boson_employee a on (a.id =
我刚刚遇到了一个关于我用SQL编写的过程的有趣问题。
在我的proc中,我有两个日期,这是默认为null的可选参数,我想检查这些参数是否不为NULL,如果不运行部分proc,如果它们为null,则忽略proc的额外部分。
我做了一个相当基本的IF(@dateVariable <> NULL AND @DateVariable2 <> NULL)语句,但是if语句即使变量不为空也无法工作,我假设SQL正在努力将日期与空值进行比较,这很奇怪,因为datetime是可以为空的。
为了解决这个问题,我只做了IF(DateVariable IS NOT NULL),它工作正常。我
如果遇到空值,请解释Oracle中SUM函数的内部功能:
的结果
select sum(null) from dual;
is null
但是,当一个空值在一个值序列中(就像一个空值列的和)时,空值的计算值将为0。
select sum(value) from
(
select case when mod(level , 2) = 0 then null else level end as value from dual
connect by level <= 10
)
is 25
这将是更有趣的当看到的结果
select (1 + null) from dual
is null
任何带
假设我提取了一组数据。
即
SELECT A, date
FROM table
我只想要具有最大日期的记录(对于每个A值)。我可以写
SELECT A, col_date
FROM TABLENAME t_ext
WHERE col_date = (SELECT MAX (col_date)
FROM TABLENAME t_in
WHERE t_in.A = t_ext.A)
但是我的查询真的很长...有没有一种更简洁的方法使用解析函数来做同样的事情?
我在Big query中使用计划查询,它将前一天的数据附加到Big Query表中。当我的查询运行时,前一天的数据并不总是可用的,因此,为了确保我拥有所有的数据,我需要计算我的Big query表中的最后一个可用日期。
我的第一个尝试是编写以下查询:
SELECT *
FROM sourceTable
WHERE date >= (SELECT Max(date) from destinationTable)
当我运行这个查询时,只有date >= max(date)被正确导出。但是,查询将处理整个sourceTable,而不仅仅是J-max(日期)。因此,成本比预期的要高。
我还
因此Oracle将null放在第一位,我可以使用它将null值按降序排列在顶部,然后是我的列值:
ORDER BY date_sent NULLS FIRST
SQL Server的可比性是什么?假设日期值为NULL或为过去,则有以下替代方法:
ORDER BY ISNULL(date_sent, GETDATE()) DESC
ORDER BY (CASE WHEN t.setinactive IS NULL THEN 1 ELSE 2 END), t.setinactive DESC
ORDER BY -CAST(date_sent as int) ASC
还有别的吗?