簡體   English   中英

SQL在一個查詢中多個和

[英]SQL multiple sums in one query

我正在嘗試學習SQL,並且想知道如何針對多個日期編寫此查詢。 我嘗試使用CASE,但未輸出正確的總數。 該查詢有效。

我試圖將每個預訂的日費率合計,即實際上是每天的銷售額。

SELECT SUM(dailyrate) AS 1June
FROM reservations
    WHERE start_date < '2018-06-02' AND end_date > '2018-06-01';

這是我使用CASE進行的嘗試,但無法得出正確的總數。

select dailyrate, 
    sum(case when start_date < '2018-06-02' AND end_date > '2018-06-01' then 1 else 0 end) as 1june,
    sum(case when start_date < '2018-06-03' AND end_date > '2018-06-02' then 1 else 0 end) as 2june,
    sum(case when start_date < '2018-06-04' AND end_date > '2018-06-03' then 1 else 0 end) as 3june
FROM reservations;

+------------------+------------------+----------+-
|   start_date     |    end_date      | dailyrate |
+------------------+------------------+----------+--
| 2018-06-01 05:00 | 2018-06-01 15:00 | 22       |  
| 2018-05-21 05:00 | 2018-06-04 19:00 | 11.5     |  
| 2018-06-01 15:00 | 2018-06-07 05:00 | 24       |  
| 2018-06-03 05:00 | 2018-06-02 22:00 | 9.5      | 
| 2018-05-21 12:00 | 2018-06-11 05:00 | 31       |  
+------------------+------------------+----------+-

您是否正在尋找每天每一日的COUNT個? 如果是這樣,這可能是您要執行的查詢:

SELECT dailyrate, 
COUNT(CASE WHEN start_date < '2018-06-02' AND end_date > '2018-06-01' THEN 1 ELSE 0 end) AS 1june,
COUNT(CASE WHEN start_date < '2018-06-03' AND end_date > '2018-06-02' THEN 1 ELSE 0 end) AS 2june,
COUNT(CASE WHEN start_date < '2018-06-04' AND end_date > '2018-06-03' THEN 1 ELSE 0 end) AS 3june
FROM reservations
GROUP BY dailyrate;

如果您要查找每個表的每日費率的總和,那么此查詢可能對您有用:

SELECT dailyrate, 
SUM(CASE WHEN start_date < '2018-06-02' AND end_date > '2018-06-01' THEN dailyrate ELSE 0 end) AS 1june,
SUM(CASE WHEN start_date < '2018-06-03' AND end_date > '2018-06-02' THEN dailyrate ELSE 0 end) AS 2june,
SUM(CASE WHEN start_date < '2018-06-04' AND end_date > '2018-06-03' THEN dailyrate ELSE 0 end) AS 3june
SUM reservations
GROUP BY dailyrate;

我認為您錯過了GROUP BY,因為SUM和COUNT函數都是聚合函數,需要GROUP BY才能顯示正確的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM