2016-09-27 4 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のテクニックの1つを使用します。 1時間ごとに別々の列ではなく、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 
    ... 
) 
関連する問題