Wpis z mikrobloga

Jestem noobem w #sql #mssql Chciałbym zapytanie, które zwraca z tabeli 3 wartości z zadanymi warunkami, żeby było łatwiej ta wklejam, jak to (błędnie) skonstruowałem:

select top 1 timestamp, MIN(price), MAX(price) from transactions where timestamp>1388530803 and timestamp<1388617243 order by tid asc
Czyli chcę otrzymać tabelę z:
1. najmniejszą wartością timestamp w zadanym okresie,
2. minimalną ceną w zadanym okresie
3. maksymalną ceną w zadanym okresie


Jak mogę to uzyskać?
#programowanie
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

select min(timestamp), MIN(price), MAX(price) from transactions where timestamp>1388530803 and timestamp<1388617243


@darco3: w sumie... działa :) głupio tylko, że sam tak nie zrobiłem ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@darco3: @ludzik: ups, jednak nie, popieprzyło mi się pytanie ( ͡° ʖ̯ ͡°) Chodziło mi o to, żeby wziąć nie pierwszy timestamp w danym okresie, tylko cenę w rekordzie z pierwszym timestamp. Tak się da jakoś łatwo?
  • Odpowiedz
czyli poprawiając to wcześniejsze (i tak błędne) zapytanie

select top 1 price, MIN(price), MAX(price) from transactions where timestamp>1388530803 and timestamp<1388617243 order by timestamp asc
  • Odpowiedz
select x.timestamp,x.minprice,x.maxprice,t.price pricemintimestamp from
(
select min(timestamp) mintimestamp , MIN(price) minprice, MAX(price) maxprice from transactions where timestamp>1388530803 and timestamp<1388617243
) x
inner join transactions t on t.timestamp = x.timestamp
  • Odpowiedz
@darco3: Przejdzie Ci bez aliasów kolumn?
select b.minstamp, a.price
from
(
select min(timestamp) as minStamp from transactions
where timestamp>1388530803
  • Odpowiedz
poprawka
select x.timestamp,x.minprice,x.maxprice,t.price pricemintimestamp from
(
select min(timestamp) mintimestamp , MIN(price) minprice, MAX(price) maxprice from transactions where timestamp>1388530803 and timestamp<1388617243
) x
inner join transactions t on t.timestamp = x.mintimestamp
  • Odpowiedz
@darco3: @ludzik: dzięki, działa :)

przy założeniu że timestamp jest unikalny

Właściwie to nie jest, ale tid jest (a większe tid - starsza transakcja), więc użyję tid zamiast timestamp.
  • Odpowiedz