SELECT

2016-03-31 20 views
0

bir alt sorguya bir Postgresql yeni başlayanıyım. Ben bir tablo var "çökmeler" ileSELECT

ID | Tarih | Zaman

PK olarak kimlikle. , 30

date  | nbCrashs 
---------------------------- 
29/03/2016 |  2 
30/03/2016 |  4 
31/03/2016 |  3 

Şimdi ben işte (bu sorgunun azami nbCrashs seçmek istiyorum:

SELECT  TO_CHAR(crashs.date, 'DD/MM/YYYY') AS "date", COUNT(crashs."ID") AS "nbCrashs" 

FROM  crashs 

WHERE  crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND 
     crashs.date <= to_date('2016-03-31','YYYY-MM-DD') 

GROUP BY crashs.date 
ORDER BY crashs.date ASC; 

ve sonuç:

Ben günde tüm Crashs sayıyor bir sorgu var

: -/2016/03> 4)

i alt sorgu olarak bu konuda SEÇ denedik ama olmadı işleri yapmak ... İşte ben denedim sorgu
SELECT  MAX(CrashsPerDay.nbCrashs) 

FROM 

(SELECT  TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS "nbCrashs" 

FROM  crashs 

WHERE  crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND 
      crashs.date <= to_date('2016-03-31','YYYY-MM-DD') 

GROUP BY crashs.date 
ORDER BY crashs.date ASC) AS "CrashsPerDay"; 

Ben bu yüzden hata mesajı çevirmek için fransız çalışacağım am, ama böyle bir şey var benim SELECT crashsperday '

hata noktası, "tablosu için FROM yan tümcesi girişini kayıp' "Maks ('C') 'lerdir. İlginiz

+0

numara? –

+0

Takma adlara ihtiyacınız var mı acaba: TO_CHAR (crashs.date, 'DD/AA/YYYY') –

+0

GROUP BY günde çarpma sayısını saymak için kullanılır, eğer bunu silersem, şu gibi bir şeyim olur: 29/03/2016 | 1 30/03/2016 | 1 30/03/2016 | 1 30/03/2016 | 1 31/03/2016 | 1 31/03/2016 | 1 Takma ad için SQL Server'dan geliyorum, bu yüzden bazı sıkıntılarım var, ancak tüm takma adlarm tırnak işaretleri ile işlevseldir.Ama haklısın, "SELECT Max (nbCrashs) kullanabilirim ama aşağıdaki hatayı alıyorum:" NbCrashs mevcut değil " –

cevap

1

Bu için

teşekkürler harf duyarlılığı sorunudur. Adlarınızı "Quotes" içine koymaya başlar başlamaz, her zaman başvurduğunuzda bu adı tırnak içine almak için dikkatli olmalısınız. Yani belki daha iyi,

SELECT  MAX("CrashsPerDay"."nbCrashs") -- Fix here 
FROM 
(SELECT  TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS "nbCrashs" 
FROM  crashs 
WHERE  crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND 
      crashs.date <= to_date('2016-03-31','YYYY-MM-DD') 
GROUP BY crashs.date 
ORDER BY crashs.date ASC) AS "CrashsPerDay"; 

Veya: Aşağıdaki sorgu şekilde sorunu çözecektir

SELECT  MAX(CrashsPerDay.nbCrashs) 
FROM 
(SELECT  TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS nbCrashs -- fix here 
FROM  crashs 
WHERE  crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND 
      crashs.date <= to_date('2016-03-31','YYYY-MM-DD') 
GROUP BY crashs.date 
ORDER BY crashs.date ASC) AS CrashsPerDay; -- and fix here 

Başka bir deyişle:

  • Bu iki isim aynıdır (harf büyüklüğüne duyarsız) : Bu iki ad aynı değil (büyük/küçük harf duyarlı): "CrashsPerDay" ve: CrashsPerDay ve crashsperday ve
  • crashsperday ve "crashsperday"

OKB ikramiye düzeltme::

  • PostgreSQL, bu iki isim aynı (varsayılan olarak küçük harfle) olan bir günden fazla maksimum vardır ne olur It's "crashes", not "crashs" ;-)

  • +0

    Çok teşekkürler! Çalışır! –