Nano Hash - криптовалюты, майнинг, программирование

получить результат запроса

CREATE TABLE TEMP25
(
  STATUS  VARCHAR2(200 BYTE)
);

Insert into TEMP25
   (STATUS)
 Values
   ('PENDING');
Insert into TEMP25
   (STATUS)
 Values
   ('ERROR');
Insert into TEMP25
   (STATUS)
 Values
  ('ERROR');
Insert into TEMP25
   (STATUS)
 Values
   ('ERROR');
Insert into TEMP25
   (STATUS)
 Values
   ('NOT_REQUIRED');
Insert into TEMP25
   (STATUS)
 Values
   ('NOT_REQUIRED'); 
Insert into TEMP25
   (STATUS)
 Values
   ('PENDING');
Insert into TEMP25
   (STATUS)
 Values
   ('PENDING');
Insert into TEMP25
  (STATUS)
 Values
   ('ERROR');
Insert into TEMP25
   (STATUS)
Values
  ('NOT_REQUIRED');
Insert into TEMP25
  (STATUS)
 Values
  ('ERROR');
Insert into TEMP25
   (STATUS)
 Values
  ('INVALID');
Insert into TEMP25
   (STATUS) 
 Values
   ('INVALID');
Insert into TEMP25
  (STATUS)
 Values
  ('PENDING');

Я хочу написать запрос так, чтобы я получил счет как

TOTAL_RECORDS  TOTAL_PENDING TOTAL_NOT_REQUIRED   TOTAL_PENDING
-----------------------------------------------------------------
   14               4             3                   5 
-----------------------------------------------------------------

Я хочу запись в последовательности и в одном запросе, я пробовал с предложением with table, это работает ... есть ли какое-либо другое решение ... и мне не нужны недопустимые записи

19.04.2012

Ответы:


1

Вы можете использовать SUM/CASE или (SUM/DECODE, если хотите)

Select
   COUNT(*) TOTAL_RECORDS  ,
   SUM(case when status = 'PENDING' then 1 else 0 END) TOTAL_PENDING, 
   SUM(case when status = 'NOT_REQUIRED' then 1 else 0 END) TOTAL_NOT_REQUIRED, 
   SUM(case when status = 'ERROR' then 1 else 0 END) TOTAL_ERROR


FROM temp25

Посмотрите, как это работает здесь

Вы также можете использовать сводную точку, но получение подсчета (*) немного уродливо

WITH 
COUNTS AS(
select * 
from (
   select status
   from TEMP25 t
)
pivot 
(
   count(status)
   for status in ('PENDING' AS TOTAL_PENDING,
                  'NOT_REQUIRED' AS TOTAL_NOT_REQUIRED,
                  'ERROR' AS TOTAL_ERROR)
))


SELECT COUNT(*) total_records, 
       total_pending, 
       total_not_required, 
       total_error 
FROM   temp25, 
       counts 
GROUP  BY total_pending, 
          total_not_required, 
          total_error 

Основная версия

19.04.2012

2

Вы можете легко использовать оператор case when и получить этот результат... также посмотрите на него...

Select    COUNT(*) TOTAL_RECORDS  ,    
SUM(case when status = 'ERROR' then 1 else 0 END) TOTAL_ERROR   
SUM(case when status = 'NOT_REQUIRED' then 1 else 0 END) TOTAL_NOT_REQUIRED,     
SUM(case when status = 'PENDING' then 1 else 0 END) TOTAL_PENDING,  
FROM temp25
19.04.2012

3

В Оракле можно

SELECT
  (SELECT COUNT(*) FROM TEMP25) total,
  (SELECT COUNT(*) FROM TEMP25 WHERE STATUS='PENDING') pending,
[...]
FROM dual ;

Во всех базах данных есть нулевая таблица, которую вы можете использовать из подобных вещей.

19.04.2012
  • предыдущие ответы имеют преимущество однократного сканирования исходной таблицы. 19.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..