Я хотел бы получить некоторую статистику и рассчитать процентные доли того, какие инструменты были выбраны наиболее полно во всех регистрациях моей базы данных.
Это мои две таблицы:
$table_registration = $wpdb->prefix . 'registration';
$table_tools = $wpdb->prefix . 'tools';
таблица регистрации wp:
CREATE TABLE $table_registration
(
reg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
dato date,
billedeURL VARCHAR(80) NOT NULL,
fiske_vaegt DECIMAL( 2,1 ) NOT NULL,
fiske_laengde INT NOT NULL,
reg_user_id BIGINT UNSIGNED NOT NULL,
reg_tools_id INT UNSIGNED NOT NULL
PRIMARY KEY (reg_id),
FOREIGN KEY (reg_user_id) REFERENCES wp_users(id),
FOREIGN KEY (reg_tools_id) REFERENCES $table_tools(tools_id)
)
таблица wp_tools:
CREATE TABLE $table_tools
(
tools_id INT UNSIGNED AUTO_INCREMENT NOT NULL,
tools_navn CHAR (20),
PRIMARY KEY (tools_id)
)
Я пытался создать правильный MySQL, но безуспешно, так что это то, что я делал до сих пор.
select l.*, concat(round(100 * count(t.reg_tools_id) / t2.cnt,0),'%')
from wp_registration l
left join wp_tools t on l.toolss_id = t.reg_id
cross join
(select count(*) cnt
from wp_registration
where reg_tools_id = 1) t2
group by l.reg_id;
Но это говорит мне, что каждый инструмент использовался в 50% случаев. что, очевидно, неправильно. У меня есть три инструмента, из которых пользователи могут выбирать, и сейчас у них есть 1 — два голоса и 2 — девять голосов и 3 — два голоса, всего 13 регистраций.
Надеюсь, я понимаю, что вам нужно!
SELECT
tools.tools_id,
((COUNT(*) / (SELECT COUNT(*) FROM registration)) * 100) AS percent
FROM
registration
JOIN
tools ON registration.reg_tools_id = tools.tools_id
GROUP BY
tools.tools_id
ORDER BY
percent DESC
LIMIT 1
Некоторые замечания:
Других решений пока нет …