Данные MySQL Query, где не совпадают данные столбца

0

Я использую эту структуру в MySQL

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS 'statistics';
CREATE TABLE 'statistics' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'user' int(255) DEFAULT NULL,
  'machine_name' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'os_structure' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'os_name' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'os_version' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'processor_count' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'version' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'ip' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'country' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'country_name' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  'date' datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY ('id')
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED;

запрос до сих пор таков:

SELECT 'os_name', 'os_structure', COUNT(*) AS 'count' FROM 'statistics' GROUP BY 'os_name', 'os_structure' ORDER BY 'count' DESC;

Мой вопрос заключается в том, как получить данные, но не из одного столбца ip на count результата, так как я не эксперт в статистике, любое улучшение приветствуется. Ниже приведен пример os_name, os_structure, count истинных/ложных результатов равен 64-битной системе (для истины) или 32-битной системе (для false), когда я пытаюсь группировать по ip, результаты более чем ожидаются, я получаю много раз windows 7 professional и это не то, что я хочу.

Microsoft Windows 7 Professional    True    36
Microsoft Windows 10 Pro            True    26
Microsoft Windows 7 Ultimate        False   12
Microsoft Windows 7 Professional    False   11
Microsoft Windows 7 Ultimate        True    5
Microsoft Windows 7 Enterprise      False   1
Microsoft Windows 7 Professional N  True    1
Microsoft Windows 7 Ultimate K      False   1
  • 1
    «Как получить данные, но не из одного и того же столбца IP в результате подсчета» - мне нужно немного больше, чем это.
  • 0
    Если вы хотите, чтобы счетчик был разделен для каждого ip , попробуйте добавить его в group by , так что это GROUP BY ip, os_name, os_structure
Показать ещё 5 комментариев
Теги:

1 ответ

0
Лучший ответ

Возможно, граф (отчетливый)

например

MariaDB [sandbox]> select status,username from users;
+--------+----------+
| status | username |
+--------+----------+
|     14 | John     |
|     13 | Jane     |
|     12 | Ali      |
|     11 | Bruce    |
|     10 | Martha   |
|      9 | Sidney   |
|      8 | charlie  |
|      7 | Elisa    |
|      6 | Samantha |
|      5 | Hannah   |
|      5 | Hannah   |
|      3 | Kevin    |
+--------+----------+
12 rows in set (0.00 sec)

MariaDB [sandbox]> select status,count(*), count(distinct username) from users group by status;
+--------+----------+--------------------------+
| status | count(*) | count(distinct username) |
+--------+----------+--------------------------+
|      3 |        1 |                        1 |
|      5 |        2 |                        1 |
|      6 |        1 |                        1 |
|      7 |        1 |                        1 |
|      8 |        1 |                        1 |
|      9 |        1 |                        1 |
|     10 |        1 |                        1 |
|     11 |        1 |                        1 |
|     12 |        1 |                        1 |
|     13 |        1 |                        1 |
|     14 |        1 |                        1 |
+--------+----------+--------------------------+
11 rows in set (0.00 sec)

Состояние записи 5.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню