在下面写一个查询,以检索出发港口
  出发日期,航行量(行)作为第n列,最小值
  航行中每组的最大吨位(min_t / max_t)
  表。按出发港口和出发日期分组。筛选出行
  其中出发港口为NULL或等于Batavia。过滤组
  至少要有两次航行。


我很接近,但是in each group (min_t / max_t)我不明白他们的意思。

我在那里需要做什么?这是我应该得到的桌子...

#   departure_harbour   departure_date  n   min_t   max_t
1   Batavia               1768          2   136      1150


这就是我通过查询得到的...。

#   departure_harbour   departure_date  MIN(tonnage)    MAX(tonnage)    n
1   NULL                    1793            488             890         3


我有这个:

SELECT departure_harbour,
       departure_date,
       MIN(tonnage),
       MAX(tonnage),
       COUNT() AS n
FROM   voyages
GROUP BY departure_harbour,
         departure_date
HAVING   departure_harbour IS NULL
    OR   departure_harbour = "Batavia"


当我在AS之后声明min_t和max_t时,它只是给我错误。我不知道该怎么做。除此之外:如何更改表格中显示的列顺序?

最佳答案

这是我阅读作业时想到的。

由于我们需要排除所有零值和Batavia,因此我使用了合并将零值离港港口转换为Batavia。

SELECT departure_harbour
     , departure_date
     , count(1) n
     , min (tonnage) min_t
     , max(tonnage) max_t
FROM voyages
WHERE coalesce(departure_harbour,'Batavia') <> 'Batavia'
GROUP BY  departure_harbour
        , departure_date
HAVING count(1)>1

关于mysql - 如何重命名此SQL代码段中的多个列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43527418/

10-10 12:59