0

amazon.comでは、ユーザーは「新規およびベストセラー」で商品を並べ替えることができます。

各アイテムの「uploaddate」列と「views」列を含む「items」テーブルがあります。アップロード日とビューを組み合わせて、「新規およびベストセラー」でアイテムを並べ替えるにはどうすればよいですか?

このクエリを変更して、uploaddateとビューを組み合わせてアイテムを「New&Bestselling」としてフェッチするにはどうすればよいですか?

select * from items order by uploaddate desc, views desc
4

2 に答える 2

1

頭のてっぺんから考えることができる3つの方法があり、それらはすべて有効なアプローチである可能性があります。

1)クエリを過去7日間に制限し(または「新規」を定義します)、ビューで並べ替えます。これは新しいアイテムのみを表示しますが、最も簡単です。

2)アイテムが追加された数週間前に対応するフィールドを追加し、CASEステートメントを使用してそれを判別します。SELECT CASE(WHEN DATEDIFF(CURDATE()-uploaddate) < 7 THEN 1 ELSE 0 END AS relative week次に、weeksortで並べ替えます。

3)提案したように、selectステートメントの一部として、数式を使用して、ビューとアップロード日フィールドに基づいてランキング番号を生成し、それで並べ替えます。理想的には、最大視聴回数に基づいてランクを拡大し、古いアイテムに大きなペナルティを課して、2年前の驚くほど人気のあるアイテムが「新規およびベストセラー」チャートの一番上に表示されないようにするため、これはさらに困難です。

于 2012-06-06T19:55:03.020 に答える
0

2つのSELECTステートメントを実行します。1つはuploaddateで並べ替え、もう1つはビューで並べ替えてから、UNIONを使用してそれらをマージし、別のSELECTステートメントでラップして、重複を防ぐためにグループ化します。

于 2012-06-06T19:21:47.380 に答える