J'utilisais mysql très bien jusqu'à ce que je mette une de mes applications rails à heroku et que je devais changer. Presque tout fonctionne comme prévu sauf que j'ai une requête qui fait quelque chose de totalement funky.mysql pivot vers un tableau croisé dynamique postgres
Ceci est le postgres, mais sous mysql il est la plupart du temps identique excepté le EXTRAIT DOW et certains groupes par additions, mais ce n'est pas le problème, le problème est-il utilisé pour SUM les jours de la semaine listés, maintenant il résume la table entière ... et aussi l'AVG est éteint car il obtient également la table moy et pas les jours énumérés.
Existe-t-il un moyen d'obtenir une somme des jours énumérés sans avoir à faire un autre choix, quelque chose qui me manque? ... Je voudrais éviter de faire SELECT (SELECT ...) comme SUBQUERY juste pour obtenir une somme des colonnes.
Merci
SELECT rooms.name, rooms.id,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2010-01-20')) = -3 THEN (availables.price*1) ELSE 0 END) AS day1,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2010-01-20')) = -2 THEN (availables.price*1) ELSE 0 END) AS day2,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2010-01-20')) = -1 THEN (availables.price*1) ELSE 0 END) AS day3,
(AVG(availables.price)*1) AS avg,
(SUM(availables.price)*1) * 2 AS sum,
MAX((SIGN(spots)-1) + 2) AS beds
FROM availables
INNER JOIN rooms
ON availables.room_id=rooms.id
WHERE availables.room_id = '1818' AND availables.price > 0
GROUP BY rooms.id, rooms.name
Ne pourriez-vous simplement ajouter une clause where pour filtrer les résultats des 3 derniers jours? –
Qu'est-ce que "spots"? –
points est le nombre de places disponibles ... 2 lits restants, etc – holden