J'ai lu presque 10+ questions relatives à la mienne, mais personne n'a travaillé dans mon cas. Comme j'ai 3 tables dans ma dB et j'essaie de calculer la vente d'eux par rapport au temps (vente annuelle). où j'ai besoin de cette requête MySQL fonctionne très bien mais quand je le convertit au format postgre de Redshift, il me donne une erreur de Query postgres P>: P> existe une erreur de syntaxe dans la requête postgre et pourquoi j'ai besoin d'ajouter groupe par code> ma requête par
date_added code>. Dans
MySQL CODE> Cela a fonctionné bien et donnez-moi un bon résultat mais à Redshift je suis coincé.
Opération non valide: la colonne "O.Date_Added" doit apparaître dans le groupe par clause ou être utilisée dans une fonction d'agrégat; code> p>
o.date_added code> dans
groupe par code> p> p> P> p>
3 Réponses :
Votre Vous pouvez utiliser: p> aussi, vous pouvez supprimer les parenthèses supplémentaires de la DB-FIDDLE P> Voir RedShift Documentation pour l'utilisation de de la clause code> a
o.date_added code>. La commande
par code> est terminée une fois la requête terminée.
groupe par code>: p>
() code> fonction. Utilisez
getdate () code> à la place, comme le
maintenant () code> semble être obsolète . P> p>
Il donne une erreur `Opération invalide: Impossible d'identifier un opérateur de commande pour le type d'enregistrement;`
Passez-vous la commande par des colonnes comme variable? Voir DB-Fiddle. En outre, vous n'avez pas mentionné la version de PostgreSQL que vous utilisez.
Sir Postgres Version 8.0.2 (J'utilise dans AWS Redshift).
Pourrait être une autre erreur déclenchée par la version PostgreSQL de Redshift. Essayez de supprimer les parenthèses supplémentaires du groupe par code>. Voir DB-Fiddle.
Merci d'être avec moi ... j'ai copié votre requête.match tout, mais encore une nouvelle erreur .. Opération non valide: types ou fonctions spécifiés (un par message d'information) non pris en charge sur les tables de redshift.; Code >
OK, c'est une erreur différente et indique comment redshift permet une utilisation de la fonction uniquement sur le nœud de leader. Le principal suspect de votre requête serait la fonction () code>. Voir le lien de documentation.
une colonne dans un Vous avez P> Commande par code> Clause dans une requête contenant
Groupe par code> Fonctionne comme s'il était mentionné dans la clause code> code>.
ORDER BY
MONTH(o.date_added) ASC,
YEAR(o.date_added) ASC
Sir il donne une erreur Opération invalide: Impossible d'identifier un opérateur de commande pour l'enregistrement de type; code>
J'ai trouvé l'erreur.I Utilisé SQL Workbench et obtenez l'erreur sur Simplement, i Jutts remplacé par MAINTENANT Ressemble à la question: P> () code> fonction que j'utilisais dans mon
postgre code> requête.
maintenant () code> avec
actuel_date code> et les choses fonctionnaient pour moi. En outre, j'obtiens une erreur pour
limite 0, 25 code> mais dans PostGre, ils autorisent
limite 25 [décalage n] code>. P>
SELECT
EXTRACT(MONTH FROM o.date_added) AS month,
EXTRACT(YEAR FROM o.date_added) AS year,
COUNT(o.order_id) AS orders
FROM
orders o
LEFT JOIN
(
SELECT
op.order_id,
SUM(op.quantity) AS op_qty,
SUM(op.total) AS total,
SUM(op.cost) AS cost
FROM
order_product op
GROUP BY
op.order_id
) op
ON op.order_id = o.order_id
LEFT JOIN
(
SELECT
order_id
FROM
order_total
WHERE
1
GROUP BY
order_id
) ot
ON ot.order_id = o.order_id
WHERE
(
DATE(o.date_added) >= CURRENT_DATE + interval '-24 month'
AND DATE(o.date_added) <= DATE(CURRENT_DATE)
)
GROUP BY EXTRACT(MONTH FROM o.date_added), EXTRACT(YEAR FROM o.date_added)
ORDER BY year ASC, month ASC LIMIT 25