gpt4 book ai didi

sql选择多行的最早日期

转载 作者:行者123 更新时间:2023-11-29 11:40:49 25 4
gpt4 key购买 nike

我有一个如下所示的数据库;

circuit_uid   |  customer_name   | location      | reading_date | reading_time | amps | volts  |  kw  | kwh | kva  |  pf  |  key
--------------------------------------------------------------------------------------------------------------------------------------
cu1.cb1.r1 | Customer 1 | 12.01.a1 | 2012-01-02 | 00:01:01 | 4.51 | 229.32 | 1.03 | 87 | 1.03 | 0.85 | 15
cu1.cb1.r1 | Customer 1 | 12.01.a1 | 2012-01-02 | 01:01:01 | 4.18 | 230.3 | 0.96 | 90 | 0.96 | 0.84 | 16
cu1.cb1.s2 | Customer 2 | 10.01.a1 | 2012-01-02 | 00:01:01 | 7.34 | 228.14 | 1.67 | 179 | 1.67 | 0.88 | 24009
cu1.cb1.s2 | Customer 2 | 10.01.a1 | 2012-01-02 | 01:01:01 | 9.07 | 228.4 | 2.07 | 182 | 2.07 | 0.85 | 24010
cu1.cb1.r1 | Customer 3 | 01.01.a1 | 2012-01-02 | 00:01:01 | 7.32 | 229.01 | 1.68 | 223 | 1.68 | 0.89 | 48003
cu1.cb1.r1 | Customer 3 | 01.01.a1 | 2012-01-02 | 01:01:01 | 6.61 | 228.29 | 1.51 | 226 | 1.51 | 0.88 | 48004

我想做的是生成一个结果,该结果包含该日期最早 (min(reading_time)) 每个客户的 KWH 读数,该日期将由用户选择一个网络表单。

结果将/应该类似于;

Customer 1   87
Customer 2 179
Customer 3 223

每天的行数比此处显示的多,而且客户更多,客户数量会定期变化。

我没有太多的 SQL 经验,我看过子查询等,但我没有办法弄清楚如何通过每个客户的最早阅读来安排它,然后只输出 kwh 专栏。

这在 Redhat/CentOS 上的 PostgreSQL 8.4 中运行。

最佳答案

select customer_name,
kwh,
reading_date,
reading_time
from (
select customer_name,
kwh,
reading_time,
reading_date,
row_number() over (partition by customer_name order by reading_time) as rn
from readings
where reading_date = date '2012-11-17'
) t
where rn = 1

作为替代方案:

select r1.customer_name,
r1.kwh,
r1.reading_date,
r1.reading_time
from readings r1
where reading_date = date '2012-11-17'
and reading_time = (select min(r2.reading_time)
from readings
where r2.customer_name = r1.customer_name
and r2.read_date = r1.reading_date);

但我希望第一个会更快。

顺便说一句:为什么要将日期和时间存储在两个单独的列中?您是否知道使用 timestamp 列可以更好地处理这个问题?

关于sql选择多行的最早日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com