Как я могу получить самую последнюю дату и наиболее часто встречающиеся значения в базе данных MySQL - PullRequest
0 голосов
/ 27 ноября 2011

Как я могу получить самую последнюю дату и наиболее часто встречающиеся значения в базе данных MySQL?

У меня есть база данных следующим образом:

+----+---------+---------+-----------------------+--------+------------+---------+
| id | Name    | idStore | Name                  | idItem | date       | price   |
+----+---------+---------+-----------------------+--------+------------+---------+
| 1  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.93000 |
| 2  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.98000 |
| 3  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.90000 |
| 4  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.91000 |
| 5  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.92000 |
| 6  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.92000 |
| 7  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.92000 |
| 8  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.93000 |
| 9  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.93000 |
| 10 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.94000 |
| 11 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.94000 |
| 12 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.94000 |
| 13 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.94000 |
| 14 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-28 | 0.94000 |
| 15 | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-12 | 0.98000 |
| 16 | walmart |       1 | Honeycrisp Apples     |      2 | 2011-10-22 | 1.98000 |
| 17 | walmart |       1 | Sonya Apples          |      3 | 2011-10-22 | 2.88000 |
| 18 | walmart |       1 | Gold Delicious Apples |      4 | 2011-10-22 | 0.98000 |
| 19 | walmart |       1 | Sweet Tango Apples    |      5 | 2011-10-22 | 2.48000 |
| 20 | walmart |       1 | Granny Smith Apples   |      6 | 2011-10-22 | 1.28000 |
| 21 | walmart |       1 | Fugi Apples           |      7 | 2011-10-22 | 1.38000 |
+----+---------+---------+-----------------------+--------+------------+---------+

Я хочу получить следующий результат:

+----+---------+---------+-----------------------+--------+------------+---------+
| id | Name    | idStore | Name                  | idItem | date       | price   |
+----+---------+---------+-----------------------+--------+------------+---------+
| 5  | walmart |       1 | Red Delicious Apples  |      1 | 2011-10-29 | 0.92000 |
| 16 | walmart |       1 | Honeycrisp Apples     |      2 | 2011-10-22 | 1.98000 |
| 17 | walmart |       1 | Sonya Apples          |      3 | 2011-10-22 | 2.88000 |
| 18 | walmart |       1 | Gold Delicious Apples |      4 | 2011-10-22 | 0.98000 |
| 19 | walmart |       1 | Sweet Tango Apples    |      5 | 2011-10-22 | 2.48000 |
| 20 | walmart |       1 | Granny Smith Apples   |      6 | 2011-10-22 | 1.28000 |
| 21 | walmart |       1 | Fugi Apples           |      7 | 2011-10-22 | 1.38000 |
+----+---------+---------+-----------------------+--------+------------+---------+

Я использую следующий запрос, но он не работает, потому что он дает мне все элементы, которые имеют самую последнюю дату

select id, store_name as Name, idStore, Name, idItem , max(Price.date), min(Price.price) From table group by idStore, Store.Name, idItem, Item.Name, price ORDER BY idItem ASC, date DESC;

Я удалил цену из группировки и получилминимальная цена (не самая распространенная)

select id, store_name as Name, idStore, Name, idItem , max(Price.date), min(Price.price) From table group by idStore, Store.Name, idItem, Item.Name ORDER BY idItem ASC, date DESC;

Мне трудно это понять.Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 декабря 2011

Попробуйте это

создать таблицу #temp (выберите max (date), имя из группы tblname по имени)

, а затем выполните полное сканирование таблицы в таблице #temp и получите идентификаторыиз tblname где

temp.date = tblname.date и # temp.name = tblname.date

0 голосов
/ 27 ноября 2011

Вы должны использовать подзапросы, лучший способ оптимизировать ваш запрос:

при первом выборе макс. (Дата) и втором повторном фильтровании цены

...