2016-09-27 43 views
0

我期待着找到購物中心停車場最少佔用的一週中的哪一天和哪一天的時間。我需要找到多列的最小值。到目前爲止,我已經能夠找到每個時間列的最小值,但無法找到所有時間的最小值作爲一個組。使用mysql的表中的最小值

下面是我的表的一個小例子,實際的表要大得多。百分比表示購物中心停車場在預期時間的佔用情況。

示例表格:shopping_centre_carpark_occupancy;

Name | Day  | 4pm | 5pm | 6pm | 7pm 
    |   |  |  |  | 
x | Monday |74% | 55% | 25% | 15% 
y | Tuesday |87% | 67% | 72% | 10% 
z | Wednesday |74% | 80% | 85% | 76% 

*表結構不能改變

我需要找出是星期幾和時間的停車場被佔用率最低。我怎樣才能找到最低入住率?

謝謝

+0

使用'LEAST(下午4點,5點,6點,晚7點)'找了一天的最低入住。然後使用http://stackoverflow.com/questions/7745609/sql-select-only-rows-with-max-value-on-a-column?rq=1中的技術之一找到最低的那一行。如果你每個小時只有一個「時間」列而不是單獨的列,那將更容易。 – Barmar

回答

0

是否必須在SQL中完成?我確信有一種方法,但在代碼中可能會更容易。我只是從表中選擇所有。然後在通過數據的第一個循環中,將日期,時間和%存儲在變量中。然後對於後續記錄,將新的%與存儲在變量中的%進行比較。如果它較低,則用新數據覆蓋您的變量。當你到達數據集的末尾時,你應該擁有最低百分比的日期和時間。

+0

是的,它必須是SQL – user6889727

0

你可以有很多的子查詢的UNION做到這一點,但是這將是醜陋:

SELECT MIN(v) FROM (
    SELECT MIN(4pm) v FROM table 
    UNION 
    SELECT MIN(5pm) v FROM table 
    UNION 
    SELECT MIN(5pm) v FROM table 
    ... 
)