SQL entre DaysOfWeek
Pergunta
Tenho uma pesquisa generalizada, onde estou procurando preços médios nos vários dias da semana. O problema é que não tenho certeza de como pedir um alcance estranho. 1-7 funciona bem, (de segunda a domingo), mas se o usuário passar um domingo para uma terça-feira ... ou seja, 7-2, não funciona.
1-7 (1,2,3,4,5,6,7) 7-2 (7,1,2)
etc.
De que outra forma posso passar por um intervalo mais inteligente ou algo além?
SELECT item_id, DAYOFWEEK(bookdate) as date, bookdate, AVG(price) AS price
FROM `availables` WHERE (item_id = 16 and DAYOFWEEK(bookdate) BETWEEN 2 AND 7)
GROUP BY DAYOFWEEK(bookdate)
Solução
Talvez o que você está procurando é a sintaxe:
SELECT item_id, DAYOFWEEK(bookdate) as date, bookdate, AVG(price) AS price
FROM `availables` WHERE (item_id = 16 and DAYOFWEEK(bookdate) IN (7,1,2))
GROUP BY DAYOFWEEK(bookdate)
Outras dicas
Faça isso com uma cláusula 'in', assim: DayofWeek (Data Bookdate) em (1,2,7)
Isso também permite a flexibilidade de datas não contínuas (selecione registros para segunda e sexta-feira, por exemplo)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow