sql计数记录

时间:2012-07-07 15:52:11

标签: sql

我有一张桌子预订,包含酒店,客户,价格等

现在我想通过计算我的定价为每家酒店赚一笔钱。

我已经有一个查询工作,计算每条记录的价格,但现在我想看到它每个酒店加起来。

这就是我所拥有的:

select c.naam,((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum) )as sum 
from hotel c, kamer b, reservatie a, verblijfsformule d, verblijfsperiode e, kamertype f 
where a.kamerid = b.kamerid and b.hotelid = c.hotelid and a.verblijfsformuleid =   d.verblijfsformuleid and a.verblijfsperiodeid = e.verblijfsperiodeid and b.kamertypeid =   f.kamertypeid 

如果我运行此查询,它会给我这个结果:

Name -           sum
Hilton antwerp - 2100
Hilton antwerp - 2250
Consequat      - 2000
consequat      - 1200
Hilton antwerp - 3000

所以你可以看到它给出了正确的金额,但不是只给hilton安特卫普和Consequat一次,并且每个酒店加上所有这些总和,它总是单独给它。

我该如何解决这个问题? 我尝试了一个Group BY a.hotelid,它给了我2家酒店,但只有它没有加起来的第一张记录的总和。

提前感谢!

3 个答案:

答案 0 :(得分:1)

SELECT c.naam
    ,SUM((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum)) AS PriceSum
FROM hotel c
    INNER JOIN kamer b
        ON b.hotelid = c.hotelid
    INNER JOIN reservatie a
        ON a.kamerid = b.kamerid
    INNER JOIN verblijfsformule d
        ON a.verblijfsformuleid = d.verblijfsformuleid
    INNER JOIN verblijfsperiode e
        ON a.verblijfsperiodeid = e.verblijfsperiodeid
    INNER JOIN kamertype f
        ON b.kamertypeid = f.kamertypeid 
GROUP BY c.naam

答案 1 :(得分:0)

您需要使用group by子句。

像这样:

select c.naam,((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum) )as sum 
  from hotel c, kamer b, reservatie a, verblijfsformule d, 
       verblijfsperiode e, kamertype f 
 where a.kamerid = b.kamerid
   and b.hotelid = c.hotelid 
   and a.verblijfsformuleid =   d.verblijfsformuleid 
   and a.verblijfsperiodeid = e.verblijfsperiodeid 
   and b.kamertypeid =   f.kamertypeid
 group by c.naam

就是这样。

答案 2 :(得分:0)

您需要添加GROUP BY子句。 SELECT .... GROUP BY hotelid