SQL para JPQL?

1 resposta
jpqljavamysql
A

Preciso de calcular o úmero de leilões altamente disputados (em que o número de bids é superior à média global de bids por leilão). Tenho duas tabelas: Auction (auction_id, creator, deadline) e Bid (bid_id, bidder, bid_auction).

Achei melhor fazer uma consulta em SQL para obter a resposta e depois tentar passar de SQL para JPQL. Em SQL fiz da seguinte forma:

SELECT COUNT(*) FROM (
SELECT
  COUNT(bid.bid_auction) AS Total
FROM
  auction
LEFT JOIN bid ON bid.bid_auction = auction.auction_id
GROUP BY auction.auction_id having Total > (

SELECT AVG(Total) FROM (
SELECT
  COUNT(bid.bid_auction) AS Total
FROM
  auction
LEFT JOIN bid ON bid.bid_auction = auction.auction_id 
GROUP BY auction.auction_id)MyTabel1))MyTabel2;

Mas depois, quando tentei passar para JPQL não consegui.
Algum me pode ajudar?

Fiz da seguinte forma:

@NamedQuery(name = "Bid.findByPlusAvgBids", query = "SELECT COUNT(a) FROM "
				+ "(SELECT COUNT(b.bid_auction) AS t FROM Auction a LEFT JOIN b ON b.bid_auction =: a.auction_id "
				+ "	GROUP BY a.auction_id HAVING t > (SELECT AVG(t) FROM ( SELECT COUNT(b.bid_auction) AS t "
				+ "	FROM Auction a LEFT JOIN b ON b.bid_auction =: a.auction_id GROUP BY a.auction_id"),

1 Resposta

M

Usa sql nativo mesmo. Consultas mais complexas o pessoal sempre fala para fazer em SQL.

Criado 29 de março de 2017
Ultima resposta 31 de mar. de 2017
Respostas 1
Participantes 2