Как подсчитать количество столбцов с помощью одного запроса - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть таблица в моей базе данных, из которой я хочу получить данные на основе счетчика

имя моей таблицы syncbill, столбцы Cancelled и Noofprints, я пытаюсь записатьзапрос для получения количества cancelled и числа noofbills с использованием одного запроса

  • Для отмененных я хочу получить количество отмененных, где отменено <> Y
  • для Noofprints я хочу получить количество noofprints, где noofprints> 1

Я использую

select count(CANCELLED) as canceledbill,count(NOOFPRINTS) as duplicatebill 
from syncbill where CANCELLED<>'Y' and NOOFPRINTS>1`

этот запрос, но он дает мне одинаковое количество отсчетов для обоих

imagesyncbill">

любой здесь, пожалуйста, ведите меня

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

ИСПОЛЬЗОВАНИЕ CASE WHEN Выражение

select 
    sum(case when CANCELLED <> 'Y' then 1 else 0 end) AS cancelledbill,
    sum(case when NOOFPRINTS > 1 then 1 else 0 end)   AS duplicatebill
FROM tablename;
0 голосов
/ 26 февраля 2019

вы можете использовать sum() с кейсом expreseeion

SELECT
    sum(CASE WHEN CANCELLED <> 'Y' THEN 1 else 0 END) AS canceledbill,
    sum(CASE WHEN NOOFPRINTS > 1 THEN 1  else 0 END)   AS duplicatebill
FROM table_name;
0 голосов
/ 26 февраля 2019

Использовать условное агрегирование:

SELECT
    COUNT(CASE WHEN CANCELLED <> 'Y' THEN 1 END) AS cancelledbill,
    COUNT(CASE WHEN NOOFPRINTS > 1 THEN 1 END)   AS duplicatebill
FROM yourTable;

Если вы на самом деле используете MySQL, то приведенное выше можно упростить до этого:

SELECT
    SUM(CANCELLED <> 'Y') AS cancelledbill,
    SUM(NOOFPRINTS > 1)   AS duplicatebill
FROM yourTable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...