Как посчитать процент в sql

Как вычислить процент с помощью инструкции SQL

11 ответов

Я проверил следующее, И это работает. Ответ Гордия был близок, но имел умножение 100 в неправильном месте и имел некоторые отсутствующие скобки.

наиболее эффективный (использование over ()).

универсальный (любая версия SQL).

С CTE, наименее эффективным.

вместо использования отдельного CTE для получения общей суммы Вы можете использовать функцию окна без предложения «partition by».

Если вы используете:

чтобы получить счетчик для группы, вы можете использовать:

чтобы получить общее количество.

это, как правило, быстрее в моем опыте, но я думаю, что он может внутренне использовать временную таблицу в некоторых случаях (я видел «рабочий стол» при работе с » set statistics io on»).

EDIT: Я не уверен, что мой пример запроса-это то, что вы ищете, я просто иллюстрировал, как работают оконные функции.

вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE

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

вы должны указать систему, которую вы используете.

Я просто использую это, когда мне нужно разработать процент..

обратите внимание, что 100.0 возвращает десятичные дроби, тогда как 100 самостоятельно округляет результат до ближайшего целого числа, даже с помощью функции ROUND ()!

это, я считаю, общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.ГС3. Следующий запрос:

дает следующие выходные данные по тестовым данным, показанным ниже горизонтального правила. The ROUND функция может быть специфичной для СУБД, но остальные (возможно) нет. (Обратите внимание, что я изменил 100 на 100.0, чтобы гарантировать, что вычисление происходит с использованием нецелочисленного десятичного, числового арифметического; см. комментарии и спасибо Гром.)

должно работать следующее

EDIT: переместил * 100 добавил 1.0 чтобы убедиться, что он не выполняет целочисленное деление

в любой версии sql server вы можете использовать переменную для общего числа всех классов, как это:

вы можете использовать подзапроса выборки в запросе (хоть и не уверен, что быстрее):

вы также можете использовать хранимую процедуру (извинения за синтаксис Firebird):

Источник

Как посчитать процент в sql

SELECT Color, COUNT(*), SUM(StandardCost), 0 AS Sort1
FROM Production.Product
WHERE Color = N’Silver’ OR Color = N’Black’
GROUP BY Color

UNION ALL
SELECT N’�����’, COUNT(*), SUM(StandardCost), 1 AS Sort1
FROM Production.Product
WHERE Color = N’Silver’ OR Color = N’Black’

UNION ALL
SELECT N’�����’, COUNT(*), SUM(StandardCost), 2 AS Sort1
FROM Production.Product

UNION ALL
SELECT N’������� ����� �� �����’, COUNT(*), SUM(StandardCost), 3 AS Sort1
FROM Production.Product7 ��� 16, 16:04����[19267777] �������� | ���������� �������� ����������

Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
KRS544
Member

������:
���������: 497

��� ������� ��������� ������� «�����», ��������� � ����������, ����� ����������� � �������.
7 ��� 16, 16:42����[19267954] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
alks
Member

������:
���������: 497

7 ��� 16, 17:10����[19268070] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
o-o
Guest
7 ��� 16, 17:14����[19268085] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
alks
Member

������:
���������: 12

KRS544, �������, ������ ���� ����������� � ����� ����� � ����������!
7 ��� 16, 17:16����[19268092] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
alks
Member

— �� ��������� �����. ��� ����� ������, � ������.
��� � �������� � ������� ����� ���� �� 1000 ������.
�������� �����, ������ �� �� 3000 ������.
��� �� ��� ��� �������� � � ����.

7 ��� 16, 17:37����[19268199] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
alks
Member

������:
���������: 12

Alexander Us, �������� �������!
7 ��� 16, 17:42����[19268223] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
��������� �������
Member

����� ��� ����� ��������� ����� ����������. ���� �� ��� ������� ������ � ���� �� ��, ��� � ���.

7 ��� 16, 17:56����[19268271] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
invm
Member

������: ������
���������: 9918

Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sql
7 ��� 16, 18:07����[19268313] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
alks
Member

���� �������� �������� ����� sql ����� ������� �� olap ���� ����� ssas ����� �� ssrs

7 ��� 16, 18:13����[19268330] �������� | ���������� �������� ����������
Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sqlRe: ���������� �������� [new]
west74
Member

declare @t table
(
«color» varchar(20),
StandartCost numeric(12,2)
)

insert into @t(color,StandartCost) values
(‘Red’,1.1),(‘Red’,1.3),(‘Red’,1.5),(‘Red’,2.1),(‘Red’,0.9),
(‘Blue’,5.1),(‘Blue’,4.8),(‘Blue’,5.7),(‘Blue’,6.1),
(‘Black’,15.1),(‘Black’,14.8),(‘Black’,15.7),
(‘Silver’,7.1),(‘Silver’,6.8)

select * from (
select Color,
count_val,
cost_sum,
cast((1.0*count_val/SUM(count_val*case when [color] in (‘�����’,’�����’) then 0 else 1 end) over())*100 as int) ‘������� �����’,
cast((1.0*cost_sum/SUM(cost_sum*(case when [color] in (‘�����’,’�����’) then 0 else 1 end)) over())*100 as int) ‘������� ����’
from (

SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.

SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 15 ms, elapsed time = 22 ms.

SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Table ‘Product’. Scan count 1, logical reads 15, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Table ‘Product’. Scan count 1, logical reads 15, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 30 ms.

(5 row(s) affected)
Table ‘Product’. Scan count 1, logical reads 15, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 81 ms.
Warning: Null value is eliminated by an aggregate or other SET operation.

(5 row(s) affected)
Table ‘Worktable’. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Product’. Scan count 1, logical reads 15, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 16 ms, elapsed time = 257 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.

Источник

Как рассчитать процент с помощью оператора SQL

Конечный результат, который я ищу, составляет A: 5%, B: 15%, C: 40% и т.д.

ОТВЕТЫ

Ответ 1

Я тестировал следующее, и это работает. Ответ от gordyii был близок, но имел умножение 100 в неправильном месте и имел некоторые отсутствующие круглые скобки.

Ответ 2

Самый эффективный (с использованием функции over()).

Универсальная (любая версия SQL).

С CTE наименее эффективным.

Ответ 3

Вместо того, чтобы использовать отдельный CTE для получения общего значения, вы можете использовать функцию окна без предложения «partition by».

Если вы используете:

чтобы получить счетчик для группы, вы можете использовать:

чтобы получить общее количество.

В моем опыте он работает быстрее, но я думаю, что в некоторых случаях он мог бы использовать временную таблицу (я видел «Рабочую таблицу» при работе с «set statistics io on» ).

Ответ 4

Вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE

Ответ 5

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

Вы должны указать используемую вами систему.

Ответ 6

Я просто использую это, когда мне нужно проработать процент.

Обратите внимание, что 100.0 возвращает десятичные числа, тогда как 100 на нем будут округлять результат до ближайшего целого числа, даже с помощью функции ROUND()!

Ответ 7

Следующее должно работать

Ответ 8

Это, я считаю, общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.FC3. Следующий запрос:

Ответ 9

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

Ответ 10

Вы можете использовать подзапрос в своем запросе (непроверенный и не уверен, что быстрее):

Вы также можете использовать хранимую процедуру (извинения за синтаксис Firebird):

Источник

Как рассчитать процент с помощью оператора SQL

Я ищу одно утверждение SQL, которое найдет проценты всех возможных ответов. (A, B, C и т. д. ) Кроме того, есть ли способ сделать это без определения всех возможных ответов (открытое текстовое поле-пользователи могут ввести ‘pass/fail’, ‘none’ и т. д. )

13 ответов

Я протестировал следующее, и это действительно работает. Ответ Горди был близок, но имел умножение на 100 в неправильном месте и имел некоторые отсутствующие скобки.

Наиболее эффективный (с использованием over()).

Универсальный (любая версия SQL).

С CTE, наименее эффективным.

Вместо того, чтобы использовать отдельный CTE для получения итоговой суммы, вы можете использовать оконную функцию без предложения «partition by».

Если вы используете:

чтобы получить количество для группы, вы можете использовать:

чтобы получить общее количество.

По моему опыту, это происходит быстрее, но я думаю, что в некоторых случаях он может использовать временную таблицу (я видел «Worktable» при запуске с «set statistics io on»).

EDIT: Я не уверен, что мой пример запроса-это то, что вы ищете, я просто иллюстрировал, как работают оконные функции.

Вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE

Я просто использую это, когда мне нужно вычислить процент..

Обратите внимание, что 100.0 возвращает десятичные дроби, в то время как 100 самостоятельно округляет результат до ближайшего целого числа, даже с помощью функции ROUND()!

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

Вы должны указать систему, которую вы используете.

Должно сработать следующее

У меня есть таблица посещаемости sql студентов, где я ввел такие значения, как это: Student_id total_classes class_attended 1 31 26 2 31 21 3 31 17 4 31 21 5 31 29 Я хочу рассчитать процент посещаемости student_id с 1. Я ищу, как сформулировать утверждение sql для вышеизложенного..

Я считаю, что это общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.FC3. Следующий запрос:

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

Вы можете использовать подвыборку в своем запросе from (непроверенный и не уверенный, какой из них быстрее):

Вы также можете использовать хранимую процедуру (извините за синтаксис Firebird):

У меня была похожая проблема. вы должны быть в состоянии получить правильный результат умножения на 1.0 вместо 100.See пример изображения прилагается

Выберите класс, (количество(класс)* 1.0 / (выбрать количество(*) из MyTable)) как результат от MyTable группы по классам Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sql

Этот хорошо работает в MS SQL. Он преобразует varchar в результат two-decimal-places-limited float.

Похожие вопросы:

У меня есть таблица посещаемости sql студентов, где я ввел такие значения, как это: Student_id total_classes class_attended 1 31 26 2 31 21 3 31 17 4 31 21 5 31 29 Я хочу рассчитать процент.

Как рассчитать процент не null столбцов в sql server?

Итак, у меня есть эта база данных, содержащая некоторые онлайн-Статьи, их названия, их авторов и историю журналов, которая содержит, сколько людей вошли на сайт, чтобы прочитать, какую статью и.

Источник

2 запроса на нахождение долей (проценты)

Доброго времени суток!
Есть БД магазина автозапчастей, это мой курсовой проект, необходимо было создать БД, таблицы и их заполнить, и написать к ним 10 запросов, первые 6 прошли успешно, с оставшимися проблемс.
Вообщем, помогите пожалуйста сделать следующие запросы:

7.Получить долю товара конкретного поставщика в процентах, единицах от всего оборота магазина прибыль магазина за указанный период.
8.Получить накладные расходы в процентах от объема продаж.
9.Получить перечень и общее количество не проданного товара на складе за определенный период (залежалого) и его объем от общего товара в процентах.

8 запрос я реализовал следующим образом:

В универе в аудитории поменял тип данных для «Stoimost» и «Cena_prodazhi» на float прямо в SQL Servere в пару кликов, и доля в процентах успешно посчиталась (надеюсь что и экономически всё верно). Но дома SQL Server не разрешает изменять тип данных, говорит удалите таблицу и заново создайте. Может я что-то не так делаю?

Осталось разобраться с 7 и 9 запросами.
Прикрепляю БД. Описание предметной области на всякий случай тоже упаковал в архив.
Запросы.rar

Добрые люди, помогите пожалуйста, сил уже нет сидеть и голову ломать с этими запросами..
По возможности, обязательно отблагодарю на киви!

P.S. Если получится то и этот можно тоже разобрать Как посчитать процент в sql. Смотреть фото Как посчитать процент в sql. Смотреть картинку Как посчитать процент в sql. Картинка про Как посчитать процент в sql. Фото Как посчитать процент в sql, но для него я так понимаю нужно новую таблицу (БРАК) создавать. обновлять модели в эрвине. перескринивать всё это дело в отчет.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *