2010-09-27 3 views
1

Эй Друзья
Вот детали таблицы и данныеКак найти общее количество «1» в таблице?

id data h1 h2 h3 h4 h5 h6 h7 h8 
1 2010-10-10 1 1 1 1 1 1 1 1 
1 2010-10-11 1 0 1 0 1 0 0 1 
1 2010-10-12 0 1 1 1 1 0 0 0 

то, что мне нужно знать, как я могу создать запрос для следующих

  1. не нахожу общий нет нуля в h1-h8 для идентификатора 1
  2. не найти общее количество одного в h1-h8 для ID 1
  3. Найти общей сложности данных в h1-h8 для id1 (общее количество нуля + общее количество одного)
  4. после получения 1,2,3 использовать следующий ответ в уравнении (VAL (3) -Val (1))/вал (3)

я не так много хорошего в MySQL, если вы, ребята, можете мне помочь, то это будет большая помощь, Thks заранее

+2

Ваша структура таблицы странно. Есть несколько вхождений '1' для' id', и ваш первичный ключ - поле даты? Правильно ли указано «данные»? – BoltClock

+0

Ваши значения в h1..h8 всегда будут 0 и 1? –

+0

@michael: yes ... –

ответ

3

Прежде всего, похоже, ответ 3. будет 8 * количество строк, но ...

ответ 1:

SELECT SUM (8-(h1+h2+h3+h4+h5+h6+h7+h8)) FROM table WHERE id=YourID 

ответ 2:

SELECT SUM (h1+h2+h3+h4+h5+h6+h7+h8) FROM table WHERE id=YourID 

Ответ 3:

SELECT SUM (8 as x) FROM table WHERE id=YourID 

и ответить 4:

фигура его из себя, вы должны иметь достаточно, чтобы начать свой путь прямо сейчас :)

+0

@ daniel: для ответа 1, он показал общее количество нулей в h1-h8? Потому что если новая строка добавлена ​​со всем нолем, что мы будем делать? –

+0

@alex: попробуйте, пожалуйста, и посмотрите, работает ли это - я думаю, что так и должно быть. добавление новых строк и повторное выполнение запроса сделают трюк. можете ли вы объяснить, что вас так запутывает? –

+0

@ daniel: как вы знаете, данные в строке могут меняться, как и в 4-й строке, все могут быть нулевыми, поэтому no of zero будет 16, вправо, мы не можем предопределять нуль, так что проблема –

2

Выбор правильной структуры данных очень важен. Вы можете изменить ваше определение таблицы на что-то вроде этого:

id data  attribute value 
1 2010-10-10 h1  1 
1 2010-10-10 h2  1 
... 

Теперь вы можете использовать простые запросы, как:

1) SELECT COUNT(*) FROM table WHERE id = 1 AND value = 0 
2) SELECT COUNT(*) FROM table WHERE id = 1 AND value = 1 
3) SELECT COUNT(*) FROM table WHERE id = 1 
+0

@Banimir: сохранение данных в этом формате будет более сложным в структуре –

+0

Вам понадобится больше строк ... О чем стоит подумать. – Branimir

+0

не могли бы вы объяснить мне почему? –

Смежные вопросы