데이터베이스의 일부 통계를 간단한 막대 차트로 만들고 싶습니다. 보다 구체적으로 : 가계도이며, 매월 출생 빈도를 보여주고 싶습니다. 나는 각각의 출생 횟수와 함께 달의 목록을 얻기 위해 SQL 쿼리를 만들었습니다. 이제 가장 큰 숫자는 100 % 너비이고 다른 것은 비례하는 컬러 막대를 추가하고 싶습니다.
백분율을 계산하려면 쿼리 결과에서 가장 큰 숫자를 가져와야합니다. 그러나 표시 할 필요는 없습니다. 막대의 너비를 계산하는 데 숫자 만 사용하면됩니다.
MAX ()로 다른 솔루션을 시도했지만 모두 COUNT ()의 최대 값 만 표시하도록 설정되었습니다. 언급했듯이 전체 결과를 표시하고 계산을 위해 내부적으로 MAX () 만 필요합니다. 표시 할 필요가 없습니다.
COUNT ()에 의해 SELECT () 쿼리 순서를 수행하고 첫 번째 결과로 제한하여 숫자를 쉽게 검색 할 수 있습니다. 필요한 MAX () 결과는 하나의 숫자이므로 한 달에 숫자를 얻는 다른 SELECT 쿼리로 UNION을 수행 할 수 없습니다. 두 번째 문제는 표시되는 결과가 COUNT () 순서가 아니라 월 단위로 정렬된다는 것입니다. 따라서 현재 MAX () 숫자는 세 번째 결과이지만 데이터베이스에 추가하면 변경 될 수 있습니다.
<?php
require_once(ABSPATH . 'wp-settings.php');
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysqli_select_db($connection, DB_NAME);
$query = "SELECT
MONTHNAME(birthdatetr) AS Month_of_Birth,
MONTH(birthdatetr) AS number_of_month_of_birth,
COUNT(*) AS Total
FROM
tng_people
WHERE
MONTH(birthdatetr) > 0
GROUP BY
number_of_month_of_birth
ORDER BY
number_of_month_of_birth";
$result = mysqli_query($connection, $query);
$barwidth = floor($Total / $birthmax * 100);
?>
<?php foreach ($result as $row){
echo "{$row['Month_of_Birth']} ({$row['Total']})
<td class=\"bar-holder\"><div style=\"width:{$barwidth}%;\" class=\"bar rightround\"></div></td>";
}
?>
이 달의 월 목록을 표시해야하는 코드입니다. max-variable의 이름을 "birthmax"로 지정했습니다. 값을 할당하는 방법을 모르겠습니다. 값은 "Total"의 가장 큰 결과 여야합니다. "Barwidth"는 표시하려는 색상 막대의 계산 된 크기입니다. 코드를 그대로 사용하면 birthmax 값이 없으면 막대, 월 및 숫자가 표시되지만 막대가 전체 너비로 표시되어 barwidth에 지정된 값이 숫자 (NAN)가 아니라고 표시됩니다.
- 답변 # 1
- 답변 # 2
소화는 하나의 하위 쿼리이며 가장 많은 수를 얻습니다.
SELECT monthname(birthdatetr) month_of_birth, month(birthdatetr) number_of_month_of_birth, count(*) total, (SELECT count(*) FROM tng_people WHERE month(birthdatetr) > 0 GROUP BY month(birthdatetr) ORDER BY count(*) DESC LIMIT 1) overall_total FROM tng_people WHERE month(birthdatetr) > 0 GROUP BY month(birthdatetr) ORDER BY month(birthdatetr);
- 답변 # 3
아이디어가 맞는지 모르겠지만 하위 쿼리를 사용할 수 있다고 생각합니다
SELECT MONTHNAME(birthdatetr) AS Month_of_Birth, MONTH(birthdatetr) AS number_of_month_of_birth, COUNT(*) AS Total, (select count(*) FROM tng_people WHERE month(birthdatetr) > 0 GROUP BY month(birthdatetr) ORDER BY count(*) DESC limit 1) as birthmax FROM tng_people WHERE MONTH(birthdatetr) > 0 GROUP BY number_of_month_of_birth ORDER BY number_of_month_of_birth
관련 자료
- robotframework - 쿼리 결과를 콘솔에 인쇄하는 방법 | 로봇 프레임 워크
- arrays - SQL 쿼리 — ALL 및 '='연산자를 사용하여 예상 결과를 얻지 못함
- sql : 쿼리가 관련 결과를 반환하지 않습니다
- mysql - SQL 쿼리에서 수식을 사용하고 해당 결과를 정렬하는 방법
- java : SQL 기본 쿼리 결과를 Spring JPA 저장소에서 DTO에 매핑하는 방법은 무엇입니까?
- excel - 파워 쿼리, 새로 고치는 동안 출력 테이블 크기를 동일하게 유지
- sql - oracle에서 varchar2 유형의 CLUB 변수에있는 쿼리 결과를 할당 할 수 있습니까?
- Python에서 쿼리 SQL의 결과 주문
- swift - LiDAR 디버그 메시를 유지하면서 카메라 피드를 비활성화하는 방법은 무엇입니까?
- sql - 다른 테이블의 조인 쿼리에서 결과 값을 계산하는 방법은 무엇입니까?
- sql - ROWCOUNT없이 쿼리 결과 집합에서 반환 된 행 수 가져 오기
- python - 다른 열 값을 유지하면서 df에 여러 열 추가
- postgresql - 쿼리에 사용자 지정 함수의 결과 데이터 대상이 없습니다
- database - 올바른 결과를 검색하는 SQL Server 쿼리는 무엇입니까?
- sql server - 단일 SQL 쿼리에서 두 개의 다른 행에서 데이터를 검색 하시겠습니까?
- azure sql database - SQL Server 로그인 암호 길이를 검색하는 쿼리
- mysql - 두 테이블에 대한 조인을 사용한 SQL 쿼리 및 두 번째 테이블에 여러 외래 키가있는 결과에 새 열 집합 생성
- mysql - 5 개 상태의 결과를 모두 얻으려면 5 개의 쿼리 대신 쿼리를 작성해야합니다
- couchbase - n1ql 쿼리에서 부모의 자식을 검색하는 방법
- sql - "City"를 첫 번째 열의 공통 필터로 유지하면서 두 개의 쿼리를 조인하는 방법
- PHP에서 PDO를 사용하여 테이블에 배열을 삽입하는 방법
- php : 중첩 배열 구조의 특정 ID에 대해 전체 테이블/레code 가져오기
- php : Laravel 8 GROUP BY의 Eloquent는 각 유형 중 하나 대신 각 행을 반환합니다.
- php : mysql 데이터베이스에 타임스탬프를 어떻게 저장합니까?
- php : Laravel left오른쪽 테이블의 마지막 레code만 조인
- PHP에서 아래 결과에 맞는 배열을 작성하는 방법
- php : Laravel 마이그레이션 외래 키는 두 개의 열이 있는 기본 키를 참조합니까?
- 데이터베이스에 연결하기 위해 사용자 정의 PHP 버전 5.6.0 오류 추가
- php : MySQL 출력을 여러 페이지로 분할
- php : Laravel에서 A열의 각 값에 대해 B열의 고유한 값만 허용하는 유효성 검사 규칙을 작성하는 방법은 무엇입니까?
MYSQL 8.0 이상을 사용하는 경우
WITH
를 사용할 수 있습니다 이미 만든 테이블과 최대 값 만있는 테이블이라는 두 개의 테이블을 만듭니다. 그런 다음 두 테이블을 교차 결합하여 각 행에 최대 값을 추가하십시오.Total/max_total을 선택하여 0과 1 사이의 백분율을 얻을 수도 있습니다.
mysql<8.0의 경우 다음과 같이 두 테이블을 조인 할 수 있습니다 :